packer-config 0.0.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +2 -0
  4. data/COPYRIGHT +10 -0
  5. data/Gemfile +0 -14
  6. data/README.md +20 -9
  7. data/RELEASENOTES.md +8 -0
  8. data/Rakefile +0 -14
  9. data/lib/packer-config.rb +1 -14
  10. data/lib/packer/builder.rb +5 -15
  11. data/lib/packer/builders/all.rb +2 -14
  12. data/lib/packer/builders/amazon.rb +0 -13
  13. data/lib/packer/builders/docker.rb +1 -14
  14. data/lib/packer/builders/null.rb +40 -0
  15. data/lib/packer/builders/virtualbox.rb +1 -14
  16. data/lib/packer/dataobject.rb +0 -14
  17. data/lib/packer/envvar.rb +1 -15
  18. data/lib/packer/macro.rb +1 -15
  19. data/lib/packer/postprocessor.rb +0 -13
  20. data/lib/packer/postprocessors/all.rb +1 -14
  21. data/lib/packer/postprocessors/docker.rb +1 -14
  22. data/lib/packer/postprocessors/vagrant.rb +1 -14
  23. data/lib/packer/provisioner.rb +24 -19
  24. data/lib/packer/provisioners/all.rb +7 -14
  25. data/lib/packer/provisioners/ansible.rb +55 -0
  26. data/lib/packer/provisioners/chef/client.rb +75 -0
  27. data/lib/packer/provisioners/chef/solo.rb +67 -0
  28. data/lib/packer/provisioners/file.rb +1 -14
  29. data/lib/packer/provisioners/puppet/masterless.rb +48 -0
  30. data/lib/packer/provisioners/puppet/server.rb +47 -0
  31. data/lib/packer/provisioners/salt.rb +39 -0
  32. data/lib/packer/provisioners/shell.rb +1 -14
  33. data/packer-config.gemspec +4 -17
  34. data/spec/integration/centos_vagrant_spec.rb +4 -4
  35. data/spec/packer/builder_spec.rb +1 -14
  36. data/spec/packer/builders/amazon_spec.rb +1 -14
  37. data/spec/packer/builders/docker_spec.rb +1 -14
  38. data/spec/packer/builders/null_spec.rb +25 -0
  39. data/spec/packer/builders/virtualbox_spec.rb +1 -14
  40. data/spec/packer/dataobject_spec.rb +0 -13
  41. data/spec/packer/envvar_spec.rb +1 -14
  42. data/spec/packer/macro_spec.rb +1 -14
  43. data/spec/packer/postprocessor_spec.rb +1 -14
  44. data/spec/packer/postprocessors/docker_import_spec.rb +1 -14
  45. data/spec/packer/postprocessors/docker_push_spec.rb +1 -14
  46. data/spec/packer/postprocessors/vagrant_spec.rb +1 -14
  47. data/spec/packer/provisioner_spec.rb +2 -15
  48. data/spec/packer/provisioners/ansible_spec.rb +48 -0
  49. data/spec/packer/provisioners/chef/client_spec.rb +66 -0
  50. data/spec/packer/provisioners/chef/solo_spec.rb +98 -0
  51. data/spec/packer/provisioners/file_spec.rb +1 -14
  52. data/spec/packer/provisioners/puppet/masterless_spec.rb +141 -0
  53. data/spec/packer/provisioners/puppet/server_spec.rb +137 -0
  54. data/spec/packer/provisioners/salt_spec.rb +114 -0
  55. data/spec/packer/provisioners/shell_spec.rb +1 -14
  56. data/spec/packer/runner_spec.rb +0 -13
  57. data/spec/packer_config_spec.rb +0 -13
  58. data/spec/spec_helper.rb +0 -13
  59. data/spec/unit_helper.rb +0 -13
  60. metadata +27 -4
@@ -1,17 +1,4 @@
1
1
  # Encoding: utf-8
2
- # Copyright 2014 Ian Chesal
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
2
  require 'spec_helper'
16
3
 
17
4
  RSpec.describe Packer::Provisioner do
@@ -48,7 +35,7 @@ RSpec.describe Packer::Provisioner do
48
35
  end
49
36
 
50
37
  describe '#except' do
51
- it 'adds an execpt exception' do
38
+ it 'adds an except exception' do
52
39
  provisioner.except('thing3')
53
40
  expect(provisioner.data['except']).to eq(%w[thing3])
54
41
  provisioner.except('thing4')
@@ -75,4 +62,4 @@ RSpec.describe Packer::Provisioner do
75
62
  expect { provisioner.override('build', 10) }.to raise_error
76
63
  end
77
64
  end
78
- end
65
+ end
@@ -0,0 +1,48 @@
1
+ # Encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Packer::Provisioner::Ansible do
5
+ let(:provisioner) do
6
+ Packer::Provisioner.get_provisioner('ansible-local')
7
+ end
8
+
9
+ let(:some_string) do
10
+ 'some string'
11
+ end
12
+
13
+ let(:some_array_of_strings) do
14
+ %w[commmand1 command2]
15
+ end
16
+
17
+ let(:some_array_of_ints) do
18
+ [1, 2, 3]
19
+ end
20
+
21
+ let(:some_hash_of_strings) do
22
+ {a: 'foo', b: 'bar'}
23
+ end
24
+
25
+ it 'requires a playbook_file setting' do
26
+ expect{ provisioner.validate }.to raise_error
27
+ end
28
+
29
+ describe '#initialize' do
30
+ it 'has a type of ansible-local' do
31
+ expect(provisioner.data['type']).to eq('ansible-local')
32
+ end
33
+ end
34
+
35
+ describe '#playbook_file' do
36
+ it 'accepts a string' do
37
+ provisioner.playbook_file some_string
38
+ expect(provisioner.data['playbook_file']).to eq(some_string)
39
+ provisioner.data.delete('playbook_file')
40
+ end
41
+
42
+ it 'converts any argument passed to a string' do
43
+ provisioner.playbook_file some_array_of_ints
44
+ expect(provisioner.data['playbook_file']).to eq(some_array_of_ints.to_s)
45
+ provisioner.data.delete('playbook_file')
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,66 @@
1
+ # Encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Packer::Provisioner::Chef::Client do
5
+ let(:provisioner) do
6
+ Packer::Provisioner.get_provisioner('chef-client')
7
+ end
8
+
9
+ let(:some_string) do
10
+ 'some string'
11
+ end
12
+
13
+ let(:some_array_of_strings) do
14
+ %w[commmand1 command2]
15
+ end
16
+
17
+ let(:some_array_of_ints) do
18
+ [1, 2, 3]
19
+ end
20
+
21
+ let(:some_hash_of_strings) do
22
+ {a: 'foo', b: 'bar'}
23
+ end
24
+
25
+ it 'requires a server_url setting' do
26
+ expect{ provisioner.validate }.to raise_error
27
+ end
28
+
29
+ describe '#initialize' do
30
+ it 'has a type of chef-client' do
31
+ expect(provisioner.data['type']).to eq('chef-client')
32
+ end
33
+ end
34
+
35
+ describe '#server_url' do
36
+ it 'accepts a string' do
37
+ provisioner.server_url some_string
38
+ expect(provisioner.data['server_url']).to eq(some_string)
39
+ provisioner.data.delete('server_url')
40
+ end
41
+
42
+ it 'converts any argument passed to a string' do
43
+ provisioner.server_url some_array_of_ints
44
+ expect(provisioner.data['server_url']).to eq(some_array_of_ints.to_s)
45
+ provisioner.data.delete('server_url')
46
+ end
47
+ end
48
+
49
+ describe '#run_list' do
50
+ it 'accepts an array of strings' do
51
+ provisioner.run_list(some_array_of_strings)
52
+ expect(provisioner.data['run_list']).to eq(some_array_of_strings)
53
+ provisioner.data.delete('run_list')
54
+ end
55
+
56
+ it 'converts all entities to strings' do
57
+ provisioner.run_list(some_array_of_ints)
58
+ expect(provisioner.data['run_list']).to eq(some_array_of_ints.map(&:to_s))
59
+ provisioner.data.delete('run_list')
60
+ end
61
+
62
+ it 'raises an error if the argument cannot be made an Array' do
63
+ expect { provisioner.run_list(some_string) }.to raise_error
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,98 @@
1
+ # Encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Packer::Provisioner::Chef::Solo do
5
+ let(:provisioner) do
6
+ Packer::Provisioner.get_provisioner('chef-solo')
7
+ end
8
+
9
+ let(:some_string) do
10
+ 'some string'
11
+ end
12
+
13
+ let(:some_array_of_strings) do
14
+ %w[commmand1 command2]
15
+ end
16
+
17
+ let(:some_array_of_ints) do
18
+ [1, 2, 3]
19
+ end
20
+
21
+ let(:some_hash_of_strings) do
22
+ {a: 'foo', b: 'bar'}
23
+ end
24
+
25
+ describe '#initialize' do
26
+ it 'has a type of chef-solo' do
27
+ expect(provisioner.data['type']).to eq('chef-solo')
28
+ end
29
+ end
30
+
31
+ describe '#config_template`' do
32
+ it 'accepts a string' do
33
+ provisioner.config_template(some_string)
34
+ expect(provisioner.data['config_template']).to eq(some_string)
35
+ provisioner.data.delete('config_template')
36
+ end
37
+
38
+ it 'converts any argument passed to a string' do
39
+ provisioner.config_template(some_array_of_ints)
40
+ expect(provisioner.data['config_template']).to eq(some_array_of_ints.to_s)
41
+ provisioner.data.delete('config_template')
42
+ end
43
+ end
44
+
45
+ describe '#cookbook_paths' do
46
+ it 'accepts an array of strings' do
47
+ provisioner.cookbook_paths(some_array_of_strings)
48
+ expect(provisioner.data['cookbook_paths']).to eq(some_array_of_strings)
49
+ provisioner.data.delete('cookbook_paths')
50
+ end
51
+
52
+ it 'converts all entities to strings' do
53
+ provisioner.cookbook_paths(some_array_of_ints)
54
+ expect(provisioner.data['cookbook_paths']).to eq(some_array_of_ints.map(&:to_s))
55
+ provisioner.data.delete('cookbook_paths')
56
+ end
57
+
58
+ it 'raises an error if the argument cannot be made an Array' do
59
+ expect { provisioner.cookbook_paths(some_string) }.to raise_error
60
+ end
61
+ end
62
+
63
+ describe '#remote_cookbook_paths' do
64
+ it 'accepts an array of strings' do
65
+ provisioner.remote_cookbook_paths(some_array_of_strings)
66
+ expect(provisioner.data['remote_cookbook_paths']).to eq(some_array_of_strings)
67
+ provisioner.data.delete('remote_cookbook_paths')
68
+ end
69
+
70
+ it 'converts all entities to strings' do
71
+ provisioner.remote_cookbook_paths(some_array_of_ints)
72
+ expect(provisioner.data['remote_cookbook_paths']).to eq(some_array_of_ints.map(&:to_s))
73
+ provisioner.data.delete('remote_cookbook_paths')
74
+ end
75
+
76
+ it 'raises an error if the argument cannot be made an Array' do
77
+ expect { provisioner.remote_cookbook_paths(some_string) }.to raise_error
78
+ end
79
+ end
80
+
81
+ describe '#run_list' do
82
+ it 'accepts an array of strings' do
83
+ provisioner.run_list(some_array_of_strings)
84
+ expect(provisioner.data['run_list']).to eq(some_array_of_strings)
85
+ provisioner.data.delete('run_list')
86
+ end
87
+
88
+ it 'converts all entities to strings' do
89
+ provisioner.run_list(some_array_of_ints)
90
+ expect(provisioner.data['run_list']).to eq(some_array_of_ints.map(&:to_s))
91
+ provisioner.data.delete('run_list')
92
+ end
93
+
94
+ it 'raises an error if the argument cannot be made an Array' do
95
+ expect { provisioner.run_list(some_string) }.to raise_error
96
+ end
97
+ end
98
+ end
@@ -1,17 +1,4 @@
1
1
  # Encoding: utf-8
2
- # Copyright 2014 Ian Chesal
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
2
  require 'spec_helper'
16
3
 
17
4
  RSpec.describe Packer::Provisioner::File do
@@ -60,4 +47,4 @@ RSpec.describe Packer::Provisioner::File do
60
47
  provisioner.data.delete('destination')
61
48
  end
62
49
  end
63
- end
50
+ end
@@ -0,0 +1,141 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Packer::Provisioner do
4
+ let(:provisioner) do
5
+ Packer::Provisioner.get_provisioner('puppet-masterless')
6
+ end
7
+
8
+ let(:some_string) do
9
+ 'some string'
10
+ end
11
+
12
+ let(:some_hash_of_strings) do
13
+ { :foo => 'bar', :bar => 'foo' }
14
+ end
15
+
16
+ let(:some_array_of_strings) do
17
+ %w[command1 command2]
18
+ end
19
+
20
+ let(:some_boolean) do
21
+ true
22
+ end
23
+
24
+ let(:some_array_of_ints) do
25
+ [1, 2, 3]
26
+ end
27
+
28
+ describe '#initialize' do
29
+ it 'returns an instance' do
30
+ expect(provisioner).to be_a_kind_of(Packer::Provisioner::Puppet::Masterless)
31
+ end
32
+
33
+ it 'has a type of masterless' do
34
+ expect(provisioner.data['type']).to eq('puppet-masterless')
35
+ end
36
+ end
37
+
38
+ describe '#manifest_file' do
39
+ it 'accepts a string' do
40
+ provisioner.manifest_file(some_string)
41
+ expect(provisioner.data['manifest_file']).to eq(some_string)
42
+ provisioner.data.delete('manifest_file')
43
+ end
44
+
45
+ it 'converts any argument passed to a string' do
46
+ provisioner.manifest_file(some_array_of_ints)
47
+ expect(provisioner.data['manifest_file']).to eq(some_array_of_ints.to_s)
48
+ provisioner.data.delete('manifest_file')
49
+ end
50
+ end
51
+
52
+ describe '#execute_command' do
53
+ it 'accepts a string' do
54
+ provisioner.execute_command(some_string)
55
+ expect(provisioner.data['execute_command']).to eq(some_string)
56
+ provisioner.data.delete('execute_command')
57
+ end
58
+
59
+ it 'converts any argument passed to a string' do
60
+ provisioner.execute_command(some_array_of_ints)
61
+ expect(provisioner.data['execute_command']).to eq(some_array_of_ints.to_s)
62
+ provisioner.data.delete('execute_command')
63
+ end
64
+ end
65
+
66
+ describe '#facter' do
67
+ it 'accepts a hash' do
68
+ provisioner.facter(some_hash_of_strings)
69
+ expect(provisioner.data['facter']).to eq(some_hash_of_strings)
70
+ provisioner.data.delete('facter')
71
+ end
72
+
73
+ it 'raises an error if arguments cannot be made into a hash' do
74
+ expect{ provisioner.facter(some_string) }.to raise_error
75
+ end
76
+ end
77
+
78
+ describe '#hiera_config_path' do
79
+ it 'accepts a string' do
80
+ provisioner.hiera_config_path(some_string)
81
+ expect(provisioner.data['hiera_config_path']).to eq(some_string)
82
+ provisioner.data.delete('hiera_config_path')
83
+ end
84
+
85
+ it 'converts any argument passed to a string' do
86
+ provisioner.hiera_config_path(some_array_of_ints)
87
+ expect(provisioner.data['hiera_config_path']).to eq(some_array_of_ints.to_s)
88
+ provisioner.data.delete('hiera_config_path')
89
+ end
90
+ end
91
+
92
+ describe '#manifest_dir' do
93
+ it 'accepts a string' do
94
+ provisioner.manifest_dir(some_string)
95
+ expect(provisioner.data['manifest_dir']).to eq(some_string)
96
+ provisioner.data.delete('manifest_dir')
97
+ end
98
+
99
+ it 'converts any argument passed to a string' do
100
+ provisioner.manifest_dir(some_array_of_ints)
101
+ expect(provisioner.data['manifest_dir']).to eq(some_array_of_ints.to_s)
102
+ provisioner.data.delete('manifest_dir')
103
+ end
104
+ end
105
+
106
+ describe '#module_paths' do
107
+ it 'accepts an array of strings'do
108
+ provisioner.module_paths(some_array_of_strings)
109
+ expect(provisioner.data['module_paths']).to eq(some_array_of_strings)
110
+ provisioner.data.delete('module_paths')
111
+ end
112
+
113
+ it 'converts any argument passed to an array string' do
114
+ provisioner.module_paths(some_array_of_ints)
115
+ expect(provisioner.data['module_paths']).to eq(some_array_of_ints.map(&:to_s))
116
+ provisioner.data.delete('module_paths')
117
+ end
118
+ end
119
+
120
+ describe '#prevent_sudo' do
121
+ it 'accepts a boolean' do
122
+ provisioner.prevent_sudo(some_boolean)
123
+ expect(provisioner.data['prevent_sudo']).to be_truthy
124
+ provisioner.data.delete('some_boolean')
125
+ end
126
+ end
127
+
128
+ describe '#staging_directory' do
129
+ it 'accepts a string' do
130
+ provisioner.staging_directory(some_string)
131
+ expect(provisioner.data['staging_directory']).to eq(some_string)
132
+ provisioner.data.delete('staging_directory')
133
+ end
134
+
135
+ it 'converts any argument passed to a string' do
136
+ provisioner.staging_directory(some_array_of_ints)
137
+ expect(provisioner.data['staging_directory']).to eq(some_array_of_ints.to_s)
138
+ provisioner.data.delete('staging_directory')
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Packer::Provisioner::Puppet::Server do
4
+ let(:provisioner) do
5
+ Packer::Provisioner.get_provisioner('puppet-server')
6
+ end
7
+
8
+ let(:some_string) do
9
+ 'some string'
10
+ end
11
+
12
+ let(:some_array_of_strings) do
13
+ %w[command1 command2]
14
+ end
15
+
16
+ let(:some_array_of_ints) do
17
+ [1, 2, 3]
18
+ end
19
+
20
+ let(:some_hash_of_strings) do
21
+ {a: 'foo', b: 'bar'}
22
+ end
23
+
24
+ describe '#initialize' do
25
+ it 'returns an instance' do
26
+ expect(provisioner).to be_a_kind_of(Packer::Provisioner::Puppet::Server)
27
+ end
28
+
29
+ it 'has a type of puppet-server' do
30
+ expect(provisioner.data['type']).to eq('puppet-server')
31
+ end
32
+ end
33
+
34
+ describe '#client_cert_path' do
35
+ it 'accepts a string' do
36
+ provisioner.client_cert_path(some_string)
37
+ expect(provisioner.data['client_cert_path']).to eq(some_string)
38
+ provisioner.data.delete('client_cert_path')
39
+ end
40
+
41
+ it 'converts any argument passed to a string' do
42
+ provisioner.client_cert_path(some_array_of_ints)
43
+ expect(provisioner.data['client_cert_path']).to eq(some_array_of_ints.to_s)
44
+ provisioner.data.delete('client_cert_path')
45
+ end
46
+ end
47
+
48
+ describe '#client_private_key_path' do
49
+ it 'accepts a string' do
50
+ provisioner.client_private_key_path(some_string)
51
+ expect(provisioner.data['client_private_key_path']).to eq(some_string)
52
+ provisioner.data.delete('client_private_key_path')
53
+ end
54
+
55
+ it 'converts any argument passed to a string' do
56
+ provisioner.client_private_key_path(some_array_of_ints)
57
+ expect(provisioner.data['client_private_key_path']).to eq(some_array_of_ints.to_s)
58
+ provisioner.data.delete('client_private_key_path')
59
+ end
60
+ end
61
+
62
+ describe '#facter' do
63
+ it 'accepts a has' do
64
+ provisioner.facter(some_hash_of_strings)
65
+ expect(provisioner.data['facter']).to eq(some_hash_of_strings)
66
+ provisioner.data.delete('facter')
67
+ end
68
+
69
+ it 'raises an error if argument passed is not a Hash' do
70
+ expect { provisioner.facter(some_string) }.to raise_error
71
+ end
72
+ end
73
+
74
+ describe '#options' do
75
+ it 'accepts a string' do
76
+ provisioner.options(some_string)
77
+ expect(provisioner.data['options']).to eq(some_string)
78
+ provisioner.data.delete('options')
79
+ end
80
+
81
+ it 'converts any argument passed to a string' do
82
+ provisioner.options(some_array_of_ints)
83
+ expect(provisioner.data['options']).to eq(some_array_of_ints.to_s)
84
+ provisioner.data.delete('options')
85
+ end
86
+ end
87
+
88
+ describe '#puppet_node' do
89
+ it 'accepts a string' do
90
+ provisioner.puppet_node(some_string)
91
+ expect(provisioner.data['puppet_node']).to eq(some_string)
92
+ provisioner.data.delete('puppet_node')
93
+ end
94
+
95
+ it 'converts any argument passed to a string' do
96
+ provisioner.puppet_node(some_array_of_ints)
97
+ expect(provisioner.data['puppet_node']).to eq(some_array_of_ints.to_s)
98
+ provisioner.data.delete('puppet_node')
99
+ end
100
+ end
101
+
102
+ describe '#puppet_server' do
103
+ it 'accepts a string' do
104
+ provisioner.puppet_server(some_string)
105
+ expect(provisioner.data['puppet_server']).to eq(some_string)
106
+ provisioner.data.delete('puppet_server')
107
+ end
108
+
109
+ it 'converts any argument passed to a string' do
110
+ provisioner.puppet_server(some_array_of_ints)
111
+ expect(provisioner.data['puppet_server']).to eq(some_array_of_ints.to_s)
112
+ provisioner.data.delete('puppet_server')
113
+ end
114
+ end
115
+
116
+ describe '#prevent_sudo' do
117
+ it 'accepts a boolean' do
118
+ provisioner.prevent_sudo(true)
119
+ expect(provisioner.data['prevent_sudo']).to be_truthy
120
+ provisioner.data.delete('prevent_sudo')
121
+ end
122
+ end
123
+
124
+ describe '#staging_directory' do
125
+ it 'accepts a string' do
126
+ provisioner.staging_directory(some_string)
127
+ expect(provisioner.data['staging_directory']).to eq(some_string)
128
+ provisioner.data.delete('staging_directory')
129
+ end
130
+
131
+ it 'converts any argument passed to a string' do
132
+ provisioner.staging_directory(some_array_of_ints)
133
+ expect(provisioner.data['staging_directory']).to eq(some_array_of_ints.to_s)
134
+ provisioner.data.delete('staging_directory')
135
+ end
136
+ end
137
+ end