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 +4 -4
- data/lib/cfer/provisioning/chef.rb +48 -15
- data/lib/cfer/provisioning/client.rb.erb +22 -0
- data/lib/cfer/provisioning/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2520949babb6365f2733e61d18c71a96a12f5f48
|
4
|
+
data.tar.gz: 08f82cfdaf461eb8ff0ed718d62c1f4002a62334
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bd9096d6e34abbcca2f144d4e56904604812fe50db14490ef7036039f11f6829c506dfcb9916994db4606e96a99bc90ed439d87afd3aa8a8068ce3d9b245110
|
7
|
+
data.tar.gz: 8090b41ad1cbc2e9cf4e48f3e02d5680f22021881dd00463b5edc94e4a64567806197526fc975baf80e8a1bcdb55708c7b2c570deba884d53f3edb958450520e
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Cfer::Provisioning
|
2
|
-
def
|
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
|
-
|
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
|
-
|
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
|
-
|
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 -%>
|
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.
|
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-
|
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
|