cfer-provisioning 0.2.0.pre.alpha2 → 0.2.0.pre.alpha3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: edeab00b5081255d343cc3c446fc45c92007c297
4
- data.tar.gz: 6242a16f73c8a67c85e97f0f3a2c2ad72f502b86
3
+ metadata.gz: 2520949babb6365f2733e61d18c71a96a12f5f48
4
+ data.tar.gz: 08f82cfdaf461eb8ff0ed718d62c1f4002a62334
5
5
  SHA512:
6
- metadata.gz: 2d9d927e125c78097d532d91fce671aabb2e2f92d4fb9628b8ff71ec7f2b5ae7a0dbff6523f206fe1b524c32f5aabb723af9819d9833a3f80e8b7ec77abcdcc7
7
- data.tar.gz: c0909bfdc4a324e13a299a9acf010e4165c52d73ce4d1bd5e128e59353ab5ef74453ecdb0da039eceb155739ec18d33dc9be4559ea23c932c92b5b3b452cc685
6
+ metadata.gz: 8bd9096d6e34abbcca2f144d4e56904604812fe50db14490ef7036039f11f6829c506dfcb9916994db4606e96a99bc90ed439d87afd3aa8a8068ce3d9b245110
7
+ data.tar.gz: 8090b41ad1cbc2e9cf4e48f3e02d5680f22021881dd00463b5edc94e4a64567806197526fc975baf80e8a1bcdb55708c7b2c570deba884d53f3edb958450520e
@@ -1,5 +1,5 @@
1
1
  module Cfer::Provisioning
2
- def install_chef_solo_with_cloud_init(options = {})
2
+ def install_chef_with_cloud_init(options = {})
3
3
  # we can't use the cloud-init `chef` module because it expects a server/validator.
4
4
 
5
5
  cloud_init_bootcmds <<
@@ -77,6 +77,41 @@ module Cfer::Provisioning
77
77
  Cfer.cfize(cmd)
78
78
  end
79
79
 
80
+ def chef_client(options = {})
81
+ raise "Chef already configured on this resource" if @chef
82
+ @chef = true
83
+
84
+ raise "must specify chef_server_url" if options[:chef_server_url].nil?
85
+ raise "must specify validation_client_name" if options[:validation_client_name].nil?
86
+
87
+ options[:config_path] ||= '/etc/chef/client.rb'
88
+ options[:json_path] ||= '/etc/chef/node.json'
89
+ options[:cookbook_path] ||= '/var/chef/cookbooks'
90
+ options[:data_bag_path] ||= '/var/chef/data_bags'
91
+ options[:log_path] ||= '/var/log/chef-client.log'
92
+
93
+ options[:service_type] ||= :upstart
94
+
95
+ run_set = []
96
+
97
+ install_chef_with_cloud_init(options) unless options[:no_install]
98
+
99
+ add_write_chef_json(options)
100
+ run_set << :write_chef_json
101
+
102
+ cfn_init_config :run_chef_client do
103
+ client_rb = Erubis::Eruby.new(IO.read("#{__dir__}/client.rb.erb")).result(options: options)
104
+
105
+ file options[:config_path], content: Cfer.cfize(options[:client_rb] || client_rb),
106
+ mode: '000400', owner: 'root', group: 'root'
107
+
108
+ command :'00_run_chef_once', 'chef-client --once'
109
+ end
110
+ run_set << :run_chef_client
111
+
112
+ cfn_init_config_set :run_chef_client, run_set
113
+ end
114
+
80
115
  def chef_solo(options = {})
81
116
  raise "Chef already configured on this resource" if @chef
82
117
  @chef = true
@@ -89,7 +124,7 @@ module Cfer::Provisioning
89
124
  options[:data_bag_path] ||= '/var/chef/data_bags'
90
125
  options[:log_path] ||= '/var/log/chef-solo.log'
91
126
 
92
- install_chef_solo_with_cloud_init(options) unless options[:no_install]
127
+ install_chef_with_cloud_init(options) unless options[:no_install]
93
128
 
94
129
  if must_install_berkshelf
95
130
  install_berkshelf(options) if must_install_berkshelf # places cloud-init runners
@@ -107,10 +142,7 @@ module Cfer::Provisioning
107
142
  run_set << :run_berkshelf
108
143
  end
109
144
 
110
- cfn_metadata['CferExt::Provisioning::Chef'] = options[:json] || {}
111
- cfn_init_config :write_chef_json do
112
- command :write_chef_json, build_write_json_cmd(options[:json_path])
113
- end
145
+ add_write_chef_json(options)
114
146
  run_set << :write_chef_json
115
147
 
116
148
  cfn_init_config :run_chef_solo do
@@ -124,15 +156,7 @@ module Cfer::Provisioning
124
156
  file options[:config_path], content: options[:solo_rb] || solo_rb,
125
157
  mode: '000400', owner: 'root', group: 'root'
126
158
 
127
- run_list = options[:run_list] || []
128
-
129
- chef_cmd = "chef-solo -c '#{options[:config_path]}' -j '#{options[:json_path]}'"
130
- chef_cmd << " -o '#{options[:run_list].join(',')}'" unless options[:run_list].empty?
131
-
132
- file '/usr/local/bin/run-chef-solo.bash', content: chef_cmd,
133
- mode: '000500', owner: 'root', group: 'root'
134
-
135
- command :run_chef, 'bash /usr/local/bin/run-chef-solo.bash'
159
+ command :run_chef, 'chef-solo'
136
160
  end
137
161
  run_set << :run_chef_solo
138
162
 
@@ -140,5 +164,14 @@ module Cfer::Provisioning
140
164
  end
141
165
 
142
166
  private
167
+ def add_write_chef_json(options)
168
+ options[:run_list] ||= []
169
+ options[:json] ||= {}
170
+
171
+ cfn_metadata['CferExt::Provisioning::Chef'] = options[:json].merge(run_list: options[:run_list])
172
+ cfn_init_config :write_chef_json do
173
+ command :write_chef_json, build_write_json_cmd(options[:json_path])
174
+ end
175
+ end
143
176
  end
144
177
 
@@ -0,0 +1,22 @@
1
+ chef_server_url '<%= options[:chef_server_url] %>'
2
+ validation_client_name '<%= options[:validation_client_name] %>'
3
+ log_level <%= (options[:log_level] || :info).inspect %>
4
+ log_location '<%= options[:log_path] %>'
5
+ json_attribs '<%= options[:json_path] %>'
6
+ cookbook_path '<%= options[:cookbook_path] %>'
7
+
8
+ <%- case options[:node_name]
9
+ when nil -%>
10
+ <%- when :hostname -%>
11
+ node_name `hostname`.strip
12
+ <%- else -%>
13
+ node_name '<%= options[:node_name] %>'
14
+ <%- end %>
15
+
16
+ <%- unless options[:environment].nil? -%>
17
+ environment '<%= options[:environment] %>'
18
+ <%- end -%>
19
+
20
+ <%- unless options[:validation_key].nil? -%>
21
+ validation_key '<%= options[:validation_key] %>'
22
+ <%- end -%>
@@ -1,5 +1,5 @@
1
1
  module Cfer
2
2
  module Provisioning
3
- VERSION = "0.2.0-alpha2"
3
+ VERSION = "0.2.0-alpha3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfer-provisioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre.alpha2
4
+ version: 0.2.0.pre.alpha3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Edwards
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-16 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -115,6 +115,7 @@ files:
115
115
  - lib/cfer/provisioning/cfn-bootstrap.bash.erb
116
116
  - lib/cfer/provisioning/cfn-bootstrap.rb
117
117
  - lib/cfer/provisioning/chef.rb
118
+ - lib/cfer/provisioning/client.rb.erb
118
119
  - lib/cfer/provisioning/cloud-init.rb
119
120
  - lib/cfer/provisioning/extensions.rb
120
121
  - lib/cfer/provisioning/version.rb