packer-config 0.0.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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