cucumber-chef 3.0.0.rc.2 → 3.0.0.rc.3
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.
- data/Gemfile +1 -1
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/LICENSE +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/README.md +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/attributes/default.rb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/metadata.rb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/recipes/default.rb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/recipes/lxc.rb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/recipes/test_lab.rb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/db-168-192.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/db-test-lab.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/dhcpd-conf.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/lxc-initializer-config.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/lxc-install-chef.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/motd.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/named-conf-local.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/solrconfig.erb +0 -0
- data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/ssh-config.erb +0 -0
- data/cucumber-chef.gemspec +2 -2
- data/lib/cucumber/chef/config.rb +11 -2
- data/lib/cucumber/chef/containers.rb +1 -1
- data/lib/cucumber/chef/provider.rb +10 -16
- data/lib/cucumber/chef/providers/vagrant.rb +0 -7
- data/lib/cucumber/chef/provisioner.rb +44 -31
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-apt.erb +193 -0
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-omnibus.erb +79 -0
- data/lib/cucumber/chef/test_lab.rb +1 -1
- data/lib/cucumber/chef/utility.rb +4 -0
- data/lib/cucumber/chef/version.rb +1 -1
- metadata +25 -26
- data/chef_repo/Cheffile +0 -4
- data/chef_repo/Gemfile +0 -3
- data/lib/cucumber/chef/templates/bootstrap/ubuntu-precise-test-lab.erb +0 -80
data/Gemfile
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/lxc-install-chef.erb
RENAMED
|
File without changes
|
|
File without changes
|
data/chef_repo/{site-cookbooks → cookbooks}/cucumber-chef/templates/default/named-conf-local.erb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/cucumber-chef.gemspec
CHANGED
|
@@ -38,8 +38,8 @@ Gem::Specification.new do |s|
|
|
|
38
38
|
s.add_dependency("fog", ">= 1.3.1")
|
|
39
39
|
|
|
40
40
|
# TDD
|
|
41
|
-
s.add_dependency("cucumber", ">=
|
|
42
|
-
s.add_dependency("rspec", ">=
|
|
41
|
+
s.add_dependency("cucumber", ">= 0")
|
|
42
|
+
s.add_dependency("rspec", ">= 0")
|
|
43
43
|
|
|
44
44
|
# Support
|
|
45
45
|
s.add_dependency("mixlib-config", ">= 1.1.2")
|
data/lib/cucumber/chef/config.rb
CHANGED
|
@@ -177,7 +177,8 @@ module Cucumber
|
|
|
177
177
|
artifacts ({"chef-client-log" => "/var/log/chef/client.log",
|
|
178
178
|
"chef-client-stacktrace" => "/var/chef/cache/chef-stacktrace.out"})
|
|
179
179
|
|
|
180
|
-
chef ({:
|
|
180
|
+
chef ({:client_version => "10.18.2",
|
|
181
|
+
:server_version => "10.18.2",
|
|
181
182
|
:amqp_password => "p@ssw0rd1",
|
|
182
183
|
:admin_password => "p@ssw0rd1",
|
|
183
184
|
:render_client_rb => true})
|
|
@@ -191,6 +192,10 @@ module Cucumber
|
|
|
191
192
|
|
|
192
193
|
aws ({:lab_user => "ubuntu",
|
|
193
194
|
:lxc_user => "root",
|
|
195
|
+
:ssh => {
|
|
196
|
+
:lab_port => 22,
|
|
197
|
+
:lxc_port => 22
|
|
198
|
+
},
|
|
194
199
|
:ubuntu_release => "precise",
|
|
195
200
|
:aws_instance_arch => "i386",
|
|
196
201
|
:aws_instance_disk_store => "ebs",
|
|
@@ -198,7 +203,11 @@ module Cucumber
|
|
|
198
203
|
:aws_security_group => "cucumber-chef"})
|
|
199
204
|
|
|
200
205
|
vagrant ({:lab_user => "vagrant",
|
|
201
|
-
:lxc_user => "root"
|
|
206
|
+
:lxc_user => "root",
|
|
207
|
+
:ssh => {
|
|
208
|
+
:lab_port => 2222,
|
|
209
|
+
:lxc_port => 22
|
|
210
|
+
} })
|
|
202
211
|
|
|
203
212
|
################################################################################
|
|
204
213
|
|
|
@@ -229,7 +229,7 @@ module Cucumber
|
|
|
229
229
|
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'locale-gen'), :silence => true)
|
|
230
230
|
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'locale-gen en_US'), :silence => true)
|
|
231
231
|
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'wget http://www.opscode.com/chef/install.sh'), :silence => true)
|
|
232
|
-
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'bash install.sh -v #{Cucumber::Chef::Config.chef[:
|
|
232
|
+
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'bash install.sh -v #{Cucumber::Chef::Config.chef[:server_version]}'), :silence => true)
|
|
233
233
|
if distro.downcase == "fedora"
|
|
234
234
|
@test_lab.bootstrap_ssh.exec(%(sudo chroot #{cache_rootfs} /bin/bash -c 'rpm -Uvh --nodeps /tmp/*rpm'), :silence => true)
|
|
235
235
|
end
|
|
@@ -27,7 +27,7 @@ module Cucumber
|
|
|
27
27
|
class ProviderError < Error; end
|
|
28
28
|
|
|
29
29
|
class Provider
|
|
30
|
-
PROXY_METHODS = %w(create destroy up down reload status id state username ip port
|
|
30
|
+
PROXY_METHODS = %w(create destroy up down reload status id state username ip port alive? dead? exists?)
|
|
31
31
|
|
|
32
32
|
################################################################################
|
|
33
33
|
|
|
@@ -44,18 +44,10 @@ module Cucumber
|
|
|
44
44
|
|
|
45
45
|
################################################################################
|
|
46
46
|
|
|
47
|
-
def chef_server_webui
|
|
48
|
-
"http://#{ip}:4040"
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def chef_server_api
|
|
52
|
-
"http://#{ip}:4000"
|
|
53
|
-
end
|
|
54
|
-
|
|
55
47
|
def status
|
|
56
48
|
if exists?
|
|
57
49
|
|
|
58
|
-
headers =
|
|
50
|
+
headers = %w(provider id state username ip_address ssh_port).map(&:to_sym)
|
|
59
51
|
results = ZTK::Report.new.list([nil], headers) do |noop|
|
|
60
52
|
|
|
61
53
|
OpenStruct.new(
|
|
@@ -63,12 +55,8 @@ module Cucumber
|
|
|
63
55
|
:id => self.id,
|
|
64
56
|
:state => self.state,
|
|
65
57
|
:username => self.username,
|
|
66
|
-
:
|
|
67
|
-
:
|
|
68
|
-
:"chef-server api" => self.chef_server_api,
|
|
69
|
-
:"chef-server webui" => self.chef_server_webui,
|
|
70
|
-
:"chef-server default user" => "admin",
|
|
71
|
-
:"chef-server default password" => Cucumber::Chef::Config.chef[:admin_password]
|
|
58
|
+
:ip_address => self.ip,
|
|
59
|
+
:ssh_port => self.port
|
|
72
60
|
)
|
|
73
61
|
end
|
|
74
62
|
else
|
|
@@ -81,6 +69,12 @@ module Cucumber
|
|
|
81
69
|
raise ProviderError, e.message
|
|
82
70
|
end
|
|
83
71
|
|
|
72
|
+
################################################################################
|
|
73
|
+
|
|
74
|
+
def port
|
|
75
|
+
(Cucumber::Chef.lab_ssh_port || super(:port))
|
|
76
|
+
end
|
|
77
|
+
|
|
84
78
|
################################################################################
|
|
85
79
|
|
|
86
80
|
def method_missing(method_name, *method_args)
|
|
@@ -36,9 +36,6 @@ module Cucumber
|
|
|
36
36
|
|
|
37
37
|
def initialize(ui=ZTK::UI.new)
|
|
38
38
|
@ui = ui
|
|
39
|
-
|
|
40
|
-
# @env = ::Vagrant::Environment.new
|
|
41
|
-
# @vm = @env.primary_vm
|
|
42
39
|
end
|
|
43
40
|
|
|
44
41
|
################################################################################
|
|
@@ -145,7 +142,6 @@ module Cucumber
|
|
|
145
142
|
################################################################################
|
|
146
143
|
|
|
147
144
|
def id
|
|
148
|
-
# @vm.name
|
|
149
145
|
"default"
|
|
150
146
|
end
|
|
151
147
|
|
|
@@ -162,17 +158,14 @@ module Cucumber
|
|
|
162
158
|
end
|
|
163
159
|
|
|
164
160
|
def username
|
|
165
|
-
# @vm.config.ssh.username
|
|
166
161
|
"vagrant"
|
|
167
162
|
end
|
|
168
163
|
|
|
169
164
|
def ip
|
|
170
|
-
# @vm.config.ssh.host
|
|
171
165
|
"127.0.0.1"
|
|
172
166
|
end
|
|
173
167
|
|
|
174
168
|
def port
|
|
175
|
-
# @vm.config.vm.forwarded_ports.select{ |fwd_port| (fwd_port[:name] == "ssh") }.first[:hostport].to_i
|
|
176
169
|
2222
|
|
177
170
|
end
|
|
178
171
|
|
|
@@ -37,7 +37,10 @@ module Cucumber
|
|
|
37
37
|
|
|
38
38
|
@cookbooks_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "cookbooks")
|
|
39
39
|
@roles_path = File.join(Cucumber::Chef.root_dir, "chef_repo", "roles")
|
|
40
|
-
|
|
40
|
+
|
|
41
|
+
@chef_pre_11 = (Cucumber::Chef::Config.chef[:server_version].to_f < 11.0)
|
|
42
|
+
bootstrap_template_file = (@chef_pre_11 ? 'ubuntu-precise-apt.erb' : 'ubuntu-precise-omnibus.erb')
|
|
43
|
+
@bootstrap_template = File.join(Cucumber::Chef.root_dir, "lib", "cucumber", "chef", "templates", "bootstrap", bootstrap_template_file)
|
|
41
44
|
end
|
|
42
45
|
|
|
43
46
|
################################################################################
|
|
@@ -66,22 +69,15 @@ module Cucumber
|
|
|
66
69
|
remote_path = File.join("/tmp", "chef-solo")
|
|
67
70
|
@ui.logger.debug { "remote_path == #{remote_path.inspect}" }
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
@
|
|
71
|
-
|
|
72
|
-
@test_lab.bootstrap_ssh.exec(%(mkdir -p #{remote_path}))
|
|
73
|
-
|
|
74
|
-
Dir.glob(glob_dir).each do |file|
|
|
75
|
-
file = File.basename(file)
|
|
76
|
-
@ui.logger.debug { "file == #{file.inspect}" }
|
|
77
|
-
|
|
78
|
-
local_file = File.join(local_path, file)
|
|
79
|
-
remote_file = File.join(remote_path, file)
|
|
72
|
+
@test_lab.bootstrap_ssh.exec(%(rm -rf #{remote_path} ; mkdir -p #{remote_path}))
|
|
73
|
+
@test_lab.bootstrap_ssh.upload(local_path, remote_path)
|
|
80
74
|
|
|
81
|
-
|
|
75
|
+
# %w(Gemfile Gemfile.lock).each do |file|
|
|
76
|
+
# local_file = File.join(Cucumber::Chef.chef_repo, file)
|
|
77
|
+
# remote_file = File.join(remote_path, file)
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
end
|
|
79
|
+
# @test_lab.bootstrap_ssh.upload(local_file, remote_file)
|
|
80
|
+
# end
|
|
85
81
|
end
|
|
86
82
|
end
|
|
87
83
|
|
|
@@ -92,20 +88,13 @@ module Cucumber
|
|
|
92
88
|
|
|
93
89
|
ZTK::Benchmark.bench(:message => "Bootstrapping #{Cucumber::Chef::Config.provider.upcase} instance", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
|
94
90
|
chef_client_attributes = {
|
|
95
|
-
"run_list" => %w(
|
|
91
|
+
"run_list" => %w(role[test_lab]),
|
|
96
92
|
"cucumber_chef" => {
|
|
97
93
|
"version" => Cucumber::Chef::VERSION,
|
|
98
94
|
"prerelease" => Cucumber::Chef::Config.prerelease
|
|
99
95
|
},
|
|
100
96
|
"lab_user" => Cucumber::Chef.lab_user,
|
|
101
|
-
"lxc_user" => Cucumber::Chef.lxc_user
|
|
102
|
-
"chef_server" => {
|
|
103
|
-
"webui_enabled" => true
|
|
104
|
-
},
|
|
105
|
-
"chef_client" => {
|
|
106
|
-
"interval" => 900,
|
|
107
|
-
"splay" => 900
|
|
108
|
-
}
|
|
97
|
+
"lxc_user" => Cucumber::Chef.lxc_user
|
|
109
98
|
}
|
|
110
99
|
|
|
111
100
|
context = {
|
|
@@ -115,7 +104,8 @@ module Cucumber
|
|
|
115
104
|
:user => Cucumber::Chef::Config.user,
|
|
116
105
|
:hostname_short => Cucumber::Chef.lab_hostname_short,
|
|
117
106
|
:hostname_full => Cucumber::Chef.lab_hostname_full,
|
|
118
|
-
:
|
|
107
|
+
:chef_server_version => Cucumber::Chef::Config.chef[:server_version],
|
|
108
|
+
:chef_client_version => Cucumber::Chef::Config.chef[:client_version]
|
|
119
109
|
}
|
|
120
110
|
|
|
121
111
|
local_bootstrap_file = Tempfile.new("bootstrap")
|
|
@@ -144,7 +134,12 @@ module Cucumber
|
|
|
144
134
|
remote_path = File.join(Cucumber::Chef.lab_user_home_dir, ".chef")
|
|
145
135
|
@ui.logger.debug { "remote_path == #{remote_path.inspect}" }
|
|
146
136
|
|
|
147
|
-
files = [ File.basename(Cucumber::Chef.chef_identity)
|
|
137
|
+
files = [ File.basename(Cucumber::Chef.chef_identity) ]
|
|
138
|
+
if (@chef_pre_11 == true)
|
|
139
|
+
files << "validation.pem"
|
|
140
|
+
else
|
|
141
|
+
files << "chef-validator.pem"
|
|
142
|
+
end
|
|
148
143
|
files.each do |file|
|
|
149
144
|
@ui.logger.debug { "file == #{file.inspect}" }
|
|
150
145
|
|
|
@@ -172,13 +167,31 @@ module Cucumber
|
|
|
172
167
|
|
|
173
168
|
################################################################################
|
|
174
169
|
|
|
175
|
-
def
|
|
176
|
-
ZTK::Benchmark.bench(:message => "
|
|
177
|
-
|
|
170
|
+
def chef_first_run
|
|
171
|
+
ZTK::Benchmark.bench(:message => "Performing chef-client run", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
|
172
|
+
log_level = (ENV['LOG_LEVEL'].downcase rescue (Cucumber::Chef.is_rc? ? "debug" : "info"))
|
|
173
|
+
|
|
174
|
+
command = "/usr/bin/chef-client -j /etc/chef/first-boot.json --log_level #{log_level} --once"
|
|
175
|
+
command = "sudo #{command}"
|
|
176
|
+
@test_lab.bootstrap_ssh.exec(command, :silence => true)
|
|
178
177
|
end
|
|
178
|
+
end
|
|
179
179
|
|
|
180
|
-
|
|
181
|
-
|
|
180
|
+
################################################################################
|
|
181
|
+
|
|
182
|
+
def wait_for_chef_server
|
|
183
|
+
if (@chef_pre_11 == true)
|
|
184
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
|
185
|
+
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4000, :data => "GET", :wait => 120).wait
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server-webui", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
|
189
|
+
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 4040, :data => "GET", :wait => 120).wait
|
|
190
|
+
end
|
|
191
|
+
else
|
|
192
|
+
ZTK::Benchmark.bench(:message => "Waiting for the chef-server nginx daemon", :mark => "completed in %0.4f seconds.", :ui => @ui) do
|
|
193
|
+
ZTK::TCPSocketCheck.new(:host => @test_lab.ip, :port => 8080, :data => "GET", :wait => 120).wait
|
|
194
|
+
end
|
|
182
195
|
end
|
|
183
196
|
end
|
|
184
197
|
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Cucumber-Chef 'Chef < 11.0.0' Bootstrap Script
|
|
4
|
+
#
|
|
5
|
+
# Generated <%= Time.now.utc %>
|
|
6
|
+
#
|
|
7
|
+
set -x
|
|
8
|
+
|
|
9
|
+
CUCUMBER_CHEF_BOOTSTRAP_DONE="/.cucumber-chef-bootstrap-finished"
|
|
10
|
+
# [ -f ${CUCUMBER_CHEF_BOOTSTRAP_DONE} ] && echo "Already bootstrapped!" && exit
|
|
11
|
+
|
|
12
|
+
export DEBIAN_FRONTEND=noninteractive
|
|
13
|
+
|
|
14
|
+
echo "127.0.0.1 <%= @hostname_full %> <%= @hostname_short %>" | tee -a /etc/hosts
|
|
15
|
+
echo "<%= @hostname_full %>" | tee /etc/hostname
|
|
16
|
+
hostname <%= @hostname_full %>
|
|
17
|
+
|
|
18
|
+
echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | tee /etc/apt/sources.list.d/opscode.list
|
|
19
|
+
mkdir -p /etc/apt/trusted.gpg.d
|
|
20
|
+
gpg --fetch-key http://apt.opscode.com/packages@opscode.com.gpg.key
|
|
21
|
+
gpg --export packages@opscode.com | tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null
|
|
22
|
+
apt-get -y --force-yes update
|
|
23
|
+
apt-get -y --force-yes -o Dpkg::Options::="--force-confnew" install opscode-keyring
|
|
24
|
+
apt-get -y --force-yes update
|
|
25
|
+
chown -R ${SUDO_USER}:${SUDO_USER} ${HOME}/.gnupg
|
|
26
|
+
|
|
27
|
+
cat <<EOF | debconf-set-selections
|
|
28
|
+
chef chef/chef_server_url string http://<%= @hostname_short %>:4000
|
|
29
|
+
chef-solr chef-solr/amqp_password password <%= @amqp_password %>
|
|
30
|
+
chef-server-webui chef-server-webui/admin_password password <%= @admin_password %>
|
|
31
|
+
EOF
|
|
32
|
+
|
|
33
|
+
CHEF_CLIENT_VERSION=`apt-cache showpkg chef | tee | grep -m 1 "<%= @chef_server_version %>" | cut -c -<%= @chef_server_version.length + 3 %>`
|
|
34
|
+
CHEF_SERVER_VERSION=`apt-cache showpkg chef-server | tee | grep -m 1 "<%= @chef_server_version %>" | cut -c -<%= @chef_server_version.length + 3 %>`
|
|
35
|
+
|
|
36
|
+
apt-get -y --force-yes install chef=$CHEF_CLIENT_VERSION chef-server=$CHEF_SERVER_VERSION
|
|
37
|
+
|
|
38
|
+
echo -n "Waiting on validation.pem and webui.pem to appear..."
|
|
39
|
+
until [ -f /etc/chef/validation.pem ] && [ -f /etc/chef/webui.pem ]; do
|
|
40
|
+
echo -n "."
|
|
41
|
+
sleep 1
|
|
42
|
+
done
|
|
43
|
+
echo "done."
|
|
44
|
+
|
|
45
|
+
mkdir -p ~/.chef
|
|
46
|
+
cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef
|
|
47
|
+
knife configure -i --server-url http://127.0.0.1:4000 -u ${SUDO_USER} -r '' --defaults --disable-editing --yes -VV
|
|
48
|
+
knife client create <%= @user %> -a -f ${HOME}/.chef/<%= @user %>.pem --disable-editing --yes -VV
|
|
49
|
+
chown -R ${SUDO_USER}:${SUDO_USER} ${HOME}
|
|
50
|
+
|
|
51
|
+
if [ ! -f /etc/chef/client.pem ]; then
|
|
52
|
+
/etc/init.d/chef-client restart
|
|
53
|
+
echo -n "Waiting on client.pem to appear..."
|
|
54
|
+
i="0"
|
|
55
|
+
until [ -f /etc/chef/client.pem ]; do
|
|
56
|
+
i=$[$i+1]
|
|
57
|
+
sleep 1
|
|
58
|
+
echo -n "."
|
|
59
|
+
if [ $i -gt 60 ]; then
|
|
60
|
+
echo -n "restart-chef-client"
|
|
61
|
+
/etc/init.d/chef-client restart
|
|
62
|
+
i="0"
|
|
63
|
+
fi
|
|
64
|
+
done
|
|
65
|
+
echo "done."
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
knife cookbook upload --all --cookbook-path /tmp/chef-solo/cookbooks --force --yes -VV
|
|
69
|
+
knife role from file /tmp/chef-solo/roles/*.rb --yes -VV
|
|
70
|
+
|
|
71
|
+
cat <<EOF > /etc/chef/bootstrap-chef-client.json
|
|
72
|
+
<%= @chef_client_attributes.to_json %>
|
|
73
|
+
EOF
|
|
74
|
+
chef-client -j /etc/chef/bootstrap-chef-client.json
|
|
75
|
+
|
|
76
|
+
touch ${CUCUMBER_CHEF_BOOTSTRAP_DONE}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# #!/bin/env bash
|
|
81
|
+
# #
|
|
82
|
+
# # Cucumber-Chef Bootstrap Script
|
|
83
|
+
# #
|
|
84
|
+
# # Generated <%= Time.now.utc %>
|
|
85
|
+
# #
|
|
86
|
+
# set -x
|
|
87
|
+
|
|
88
|
+
# CUCUMBER_CHEF_BOOTSTRAP_DONE="/.cucumber-chef-bootstrap-finished"
|
|
89
|
+
# [ -f ${CUCUMBER_CHEF_BOOTSTRAP_DONE} ] && echo "Already bootstrapped!" && exit
|
|
90
|
+
|
|
91
|
+
# export DEBIAN_FRONTEND=noninteractive
|
|
92
|
+
|
|
93
|
+
# mkdir -p $HOME/.ssh/
|
|
94
|
+
# cat <<EOF > $HOME/.ssh/config
|
|
95
|
+
# UserKnownHostsFile /dev/null
|
|
96
|
+
# StrictHostKeyChecking no
|
|
97
|
+
# ForwardAgent yes
|
|
98
|
+
# EOF
|
|
99
|
+
|
|
100
|
+
# mkdir -p /root/.ssh/
|
|
101
|
+
# cp -v $HOME/.ssh/config /root/.ssh/config
|
|
102
|
+
|
|
103
|
+
# echo "127.0.0.1 <%= @hostname_full %> <%= @hostname_short %>" | tee -a /etc/hosts
|
|
104
|
+
# echo "<%= @hostname_full %>" | tee /etc/hostname
|
|
105
|
+
# hostname <%= @hostname_full %>
|
|
106
|
+
|
|
107
|
+
# apt-get -y --force-yes update
|
|
108
|
+
# apt-get -y --force-yes install build-essential rpm ruby1.9.3 # git-core #ruby-full rubygems git-core
|
|
109
|
+
# #rpm ruby1.9.3 # ruby-libxml
|
|
110
|
+
|
|
111
|
+
# wget http://www.opscode.com/chef/install.sh
|
|
112
|
+
# bash install.sh -v <%= @chef_server_version %>
|
|
113
|
+
# # rpm -Uvh --nodeps /tmp/*rpm
|
|
114
|
+
# # export PATH=/opt/chef/embedded/bin/:$PATH
|
|
115
|
+
|
|
116
|
+
# mkdir -p /etc/chef/
|
|
117
|
+
# mkdir -p /var/log/chef/
|
|
118
|
+
|
|
119
|
+
# cat <<EOF > /etc/chef/solo.rb
|
|
120
|
+
# file_cache_path "/tmp/chef-solo/"
|
|
121
|
+
# cookbook_path %w(/tmp/chef-solo/cookbooks/ /tmp/chef-solo/site-cookbooks/)
|
|
122
|
+
# role_path "/tmp/chef-solo/roles/"
|
|
123
|
+
# EOF
|
|
124
|
+
|
|
125
|
+
# cat <<EOF > /etc/chef/bootstrap-chef-client.json
|
|
126
|
+
# <%= @chef_client_attributes.to_json %>
|
|
127
|
+
# EOF
|
|
128
|
+
|
|
129
|
+
# cat <<EOF > /tmp/chef-solo/Gemfile
|
|
130
|
+
# source 'https://rubygems.org'
|
|
131
|
+
# gem 'chef', '<%= @chef_server_version %>'
|
|
132
|
+
# gem 'berkshelf'
|
|
133
|
+
# gem 'moneta', '< 0.7.0'
|
|
134
|
+
# EOF
|
|
135
|
+
|
|
136
|
+
# cat <<EOF > /tmp/chef-solo/Berksfile
|
|
137
|
+
# site :opscode
|
|
138
|
+
# cookbook 'chef-server'
|
|
139
|
+
# EOF
|
|
140
|
+
|
|
141
|
+
# cd /tmp/chef-solo/
|
|
142
|
+
|
|
143
|
+
# gem install bundler --no-ri --no-rdoc
|
|
144
|
+
# # bundle install --standalone --path vendor/bundle --binstubs
|
|
145
|
+
# bundle install
|
|
146
|
+
# # bin/librarian-chef install
|
|
147
|
+
# # librarian-chef install
|
|
148
|
+
# berks install --path /tmp/chef-solo/cookbooks/
|
|
149
|
+
|
|
150
|
+
# # git clone git://github.com/opscode-cookbooks/chef-server.git /tmp/chef-solo/cookbooks/chef-server --branch
|
|
151
|
+
|
|
152
|
+
# chef-solo --config /etc/chef/solo.rb --json-attributes /etc/chef/bootstrap-chef-solo.json --logfile /var/log/chef/chef-solo.log
|
|
153
|
+
|
|
154
|
+
# echo -n "Waiting on validation.pem and webui.pem to appear..."
|
|
155
|
+
# until [ -f /etc/chef/validation.pem ] && [ -f /etc/chef/webui.pem ]; do
|
|
156
|
+
# echo -n "."
|
|
157
|
+
# sleep 1
|
|
158
|
+
# done
|
|
159
|
+
# echo "done."
|
|
160
|
+
|
|
161
|
+
# mkdir -p ~/.chef
|
|
162
|
+
# cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef
|
|
163
|
+
|
|
164
|
+
# # apt-get -q -y install expect
|
|
165
|
+
# # KNIFE_CONFIG_EXP_FILE="/tmp/knife-config.exp"
|
|
166
|
+
# # cat <<EOF > ${KNIFE_CONFIG_EXP_FILE}
|
|
167
|
+
# # #!/usr/bin/expect -f
|
|
168
|
+
# # set timeout 10
|
|
169
|
+
# # spawn knife configure -i
|
|
170
|
+
# # expect "Overwrite ${HOME}/.chef/knife.rb" { send "Y\n" }
|
|
171
|
+
# # expect "Where should I put the config file?" { send "\n" }
|
|
172
|
+
# # expect "Please enter the chef server URL" { send "\n" }
|
|
173
|
+
# # expect "Please enter a clientname for the new client" { send "${SUDO_USER}\n" }
|
|
174
|
+
# # expect "Please enter the existing admin clientname" { send "\n" }
|
|
175
|
+
# # expect "Please enter the location of the existing admin client" { send "${HOME}/.chef/webui.pem\n" }
|
|
176
|
+
# # expect "Please enter the validation clientname" { send "\n" }
|
|
177
|
+
# # expect "Please enter the location of the validation key" { send "${HOME}/.chef/validation.pem\n" }
|
|
178
|
+
# # expect "Please enter the path to a chef repository" { send "${HOME}/chef_repo\n" }
|
|
179
|
+
# # interact
|
|
180
|
+
# # EOF
|
|
181
|
+
# # chmod +x ${KNIFE_CONFIG_EXP_FILE}
|
|
182
|
+
# # ${KNIFE_CONFIG_EXP_FILE}
|
|
183
|
+
# # run("#{try_sudo} knife configure -i -n -y -s http://localhost:4000 -u root -r '' --defaults", :hosts => server)
|
|
184
|
+
|
|
185
|
+
# knife configure -i --server-url http://127.0.0.1:4000 -u ${SUDO_USER} --defaults --disable-editing --yes -VV
|
|
186
|
+
# knife client create <%= @user %> -a -f ${HOME}/.chef/<%= @user %>.pem --disable-editing --yes -VV
|
|
187
|
+
# chown -Rv ${SUDO_USER}:${SUDO_USER} ${HOME}
|
|
188
|
+
|
|
189
|
+
# # knife cookbook upload --all --cookbook-path /tmp/chef-solo/cookbooks:/tmp/chef-solo/site-cookbooks --force --yes -VV
|
|
190
|
+
# # knife role from file /tmp/chef-solo/roles/*.rb --yes -VV
|
|
191
|
+
# # chef-client -j /etc/chef/bootstrap-chef-client.json
|
|
192
|
+
|
|
193
|
+
# touch ${CUCUMBER_CHEF_BOOTSTRAP_DONE}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Cucumber-Chef 'Chef >= 11.0.0' Bootstrap Script
|
|
4
|
+
#
|
|
5
|
+
# Generated <%= Time.now.utc %>
|
|
6
|
+
#
|
|
7
|
+
set -x
|
|
8
|
+
|
|
9
|
+
CUCUMBER_CHEF_BOOTSTRAP_DONE="/.cucumber-chef-bootstrap-finished"
|
|
10
|
+
# [ -f ${CUCUMBER_CHEF_BOOTSTRAP_DONE} ] && echo "Already bootstrapped!" && exit
|
|
11
|
+
|
|
12
|
+
export DEBIAN_FRONTEND=noninteractive
|
|
13
|
+
|
|
14
|
+
echo "127.0.0.1 <%= @hostname_full %> <%= @hostname_short %>" | tee -a /etc/hosts
|
|
15
|
+
echo "<%= @hostname_full %>" | tee /etc/hostname
|
|
16
|
+
hostname <%= @hostname_full %>
|
|
17
|
+
|
|
18
|
+
apt-get -y --force-yes update
|
|
19
|
+
|
|
20
|
+
cat <<EOF > /tmp/chef-server.json
|
|
21
|
+
{
|
|
22
|
+
"chef-server": {
|
|
23
|
+
"version": "<%= @chef_server_version %>",
|
|
24
|
+
"nginx": {
|
|
25
|
+
"enable_non_ssl": true,
|
|
26
|
+
"server_name": "localhost",
|
|
27
|
+
"url": "http://localhost"
|
|
28
|
+
},
|
|
29
|
+
"chef_server_webui": {
|
|
30
|
+
"enable": true
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"run_list": [ "recipe[chef-server::default]" ]
|
|
34
|
+
}
|
|
35
|
+
EOF
|
|
36
|
+
|
|
37
|
+
wget http://www.opscode.com/chef/install.sh
|
|
38
|
+
bash install.sh -v <%= @chef_client_version %>
|
|
39
|
+
mkdir -p /var/chef/cache /var/chef/cookbooks/chef-server
|
|
40
|
+
wget -qO- https://github.com/opscode-cookbooks/chef-server/archive/master.tar.gz | tar xvzC /var/chef/cookbooks/chef-server --strip-components=1
|
|
41
|
+
chef-solo -j /tmp/chef-server.json
|
|
42
|
+
|
|
43
|
+
echo -n "Waiting on chef-validator.pem and chef-webui.pem to appear..."
|
|
44
|
+
until [ -f /etc/chef-server/chef-validator.pem ] && [ -f /etc/chef-server/chef-webui.pem ]; do
|
|
45
|
+
echo -n "."
|
|
46
|
+
sleep 1
|
|
47
|
+
done
|
|
48
|
+
echo "done."
|
|
49
|
+
|
|
50
|
+
ln -s /etc/chef-server/chef-validator.pem /etc/chef/validation.pem
|
|
51
|
+
ln -s /etc/chef-server/admin.pem /etc/chef/admin.pem
|
|
52
|
+
|
|
53
|
+
mkdir -p ~/.chef
|
|
54
|
+
cp /etc/chef-server/chef-validator.pem /etc/chef-server/chef-webui.pem ~/.chef
|
|
55
|
+
|
|
56
|
+
apt-get -y --force-yes install expect
|
|
57
|
+
KNIFE_CONFIG_EXP_FILE="/tmp/knife-config.exp"
|
|
58
|
+
cat <<EOF > ${KNIFE_CONFIG_EXP_FILE}
|
|
59
|
+
#!/usr/bin/expect -f
|
|
60
|
+
set timeout 10
|
|
61
|
+
spawn knife configure -i --server-url https://127.0.0.1 --admin-client-key /etc/chef-server/admin.pem -u ${SUDO_USER} -r '' --defaults --yes -VV
|
|
62
|
+
expect "Please enter a password for the new user:" { send "p@ssw0rd1\n" }
|
|
63
|
+
interact
|
|
64
|
+
EOF
|
|
65
|
+
chmod +x ${KNIFE_CONFIG_EXP_FILE}
|
|
66
|
+
${KNIFE_CONFIG_EXP_FILE}
|
|
67
|
+
|
|
68
|
+
knife client create <%= @user %> -a -f ${HOME}/.chef/<%= @user %>.pem --disable-editing --yes -VV
|
|
69
|
+
chown -R ${SUDO_USER}:${SUDO_USER} ${HOME}
|
|
70
|
+
|
|
71
|
+
knife cookbook upload --all --cookbook-path /tmp/chef-solo/cookbooks --force --yes -VV
|
|
72
|
+
knife role from file /tmp/chef-solo/roles/*.rb --yes -VV
|
|
73
|
+
|
|
74
|
+
cat <<EOF > /etc/chef/bootstrap-chef-client.json
|
|
75
|
+
<%= @chef_client_attributes.to_json %>
|
|
76
|
+
EOF
|
|
77
|
+
chef-client -j /etc/chef/bootstrap-chef-client.json --validation_key /etc/chef-server/chef-validator.pem --server https://127.0.0.1
|
|
78
|
+
|
|
79
|
+
touch ${CUCUMBER_CHEF_BOOTSTRAP_DONE}
|
|
@@ -73,7 +73,7 @@ module Cucumber
|
|
|
73
73
|
@proxy_ssh[container] ||= ZTK::SSH.new({:ui => @ui, :timeout => Cucumber::Chef::Config.command_timeout}.merge(options))
|
|
74
74
|
|
|
75
75
|
@proxy_ssh[container].config.proxy_host_name = self.ip
|
|
76
|
-
@proxy_ssh[container].config.proxy_port = self.port
|
|
76
|
+
@proxy_ssh[container].config.proxy_port = Cucumber::Chef.lab_ssh_port || self.port
|
|
77
77
|
@proxy_ssh[container].config.proxy_user = Cucumber::Chef.lab_user
|
|
78
78
|
@proxy_ssh[container].config.proxy_keys = Cucumber::Chef.lab_identity
|
|
79
79
|
|
|
@@ -24,7 +24,7 @@ module Cucumber
|
|
|
24
24
|
|
|
25
25
|
################################################################################
|
|
26
26
|
|
|
27
|
-
VERSION = "3.0.0.rc.
|
|
27
|
+
VERSION = "3.0.0.rc.3" unless const_defined?(:VERSION)
|
|
28
28
|
|
|
29
29
|
################################################################################
|
|
30
30
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cucumber-chef
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.0.rc.
|
|
4
|
+
version: 3.0.0.rc.3
|
|
5
5
|
prerelease: 6
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-04-
|
|
13
|
+
date: 2013-04-04 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: fog
|
|
@@ -35,7 +35,7 @@ dependencies:
|
|
|
35
35
|
requirements:
|
|
36
36
|
- - ! '>='
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version:
|
|
38
|
+
version: '0'
|
|
39
39
|
type: :runtime
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -43,7 +43,7 @@ dependencies:
|
|
|
43
43
|
requirements:
|
|
44
44
|
- - ! '>='
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
46
|
+
version: '0'
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rspec
|
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -51,7 +51,7 @@ dependencies:
|
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: '0'
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -59,7 +59,7 @@ dependencies:
|
|
|
59
59
|
requirements:
|
|
60
60
|
- - ! '>='
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version:
|
|
62
|
+
version: '0'
|
|
63
63
|
- !ruby/object:Gem::Dependency
|
|
64
64
|
name: mixlib-config
|
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -230,25 +230,23 @@ files:
|
|
|
230
230
|
- bin/cc-console
|
|
231
231
|
- bin/cc-knife
|
|
232
232
|
- bin/cucumber-chef
|
|
233
|
-
- chef_repo/
|
|
234
|
-
- chef_repo/
|
|
233
|
+
- chef_repo/cookbooks/cucumber-chef/LICENSE
|
|
234
|
+
- chef_repo/cookbooks/cucumber-chef/README.md
|
|
235
|
+
- chef_repo/cookbooks/cucumber-chef/attributes/default.rb
|
|
236
|
+
- chef_repo/cookbooks/cucumber-chef/metadata.rb
|
|
237
|
+
- chef_repo/cookbooks/cucumber-chef/recipes/default.rb
|
|
238
|
+
- chef_repo/cookbooks/cucumber-chef/recipes/lxc.rb
|
|
239
|
+
- chef_repo/cookbooks/cucumber-chef/recipes/test_lab.rb
|
|
240
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/db-168-192.erb
|
|
241
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/db-test-lab.erb
|
|
242
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/dhcpd-conf.erb
|
|
243
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/lxc-initializer-config.erb
|
|
244
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/lxc-install-chef.erb
|
|
245
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/motd.erb
|
|
246
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/named-conf-local.erb
|
|
247
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/solrconfig.erb
|
|
248
|
+
- chef_repo/cookbooks/cucumber-chef/templates/default/ssh-config.erb
|
|
235
249
|
- chef_repo/roles/test_lab.rb
|
|
236
|
-
- chef_repo/site-cookbooks/cucumber-chef/LICENSE
|
|
237
|
-
- chef_repo/site-cookbooks/cucumber-chef/README.md
|
|
238
|
-
- chef_repo/site-cookbooks/cucumber-chef/attributes/default.rb
|
|
239
|
-
- chef_repo/site-cookbooks/cucumber-chef/metadata.rb
|
|
240
|
-
- chef_repo/site-cookbooks/cucumber-chef/recipes/default.rb
|
|
241
|
-
- chef_repo/site-cookbooks/cucumber-chef/recipes/lxc.rb
|
|
242
|
-
- chef_repo/site-cookbooks/cucumber-chef/recipes/test_lab.rb
|
|
243
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/db-168-192.erb
|
|
244
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/db-test-lab.erb
|
|
245
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/dhcpd-conf.erb
|
|
246
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/lxc-initializer-config.erb
|
|
247
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/lxc-install-chef.erb
|
|
248
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/motd.erb
|
|
249
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/named-conf-local.erb
|
|
250
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/solrconfig.erb
|
|
251
|
-
- chef_repo/site-cookbooks/cucumber-chef/templates/default/ssh-config.erb
|
|
252
250
|
- cucumber-chef.gemspec
|
|
253
251
|
- examples/README.md
|
|
254
252
|
- features/installing.feature
|
|
@@ -279,7 +277,8 @@ files:
|
|
|
279
277
|
- lib/cucumber/chef/steps/chef_steps.rb
|
|
280
278
|
- lib/cucumber/chef/steps/minitest_steps.rb
|
|
281
279
|
- lib/cucumber/chef/steps/ssh_steps.rb
|
|
282
|
-
- lib/cucumber/chef/templates/bootstrap/ubuntu-precise-
|
|
280
|
+
- lib/cucumber/chef/templates/bootstrap/ubuntu-precise-apt.erb
|
|
281
|
+
- lib/cucumber/chef/templates/bootstrap/ubuntu-precise-omnibus.erb
|
|
283
282
|
- lib/cucumber/chef/templates/cucumber-chef/config-rb.erb
|
|
284
283
|
- lib/cucumber/chef/templates/cucumber-chef/cucumber-yml.erb
|
|
285
284
|
- lib/cucumber/chef/templates/cucumber/cc-hooks.rb
|
|
@@ -319,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
319
318
|
version: 1.3.6
|
|
320
319
|
requirements: []
|
|
321
320
|
rubyforge_project:
|
|
322
|
-
rubygems_version: 1.8.
|
|
321
|
+
rubygems_version: 1.8.25
|
|
323
322
|
signing_key:
|
|
324
323
|
specification_version: 3
|
|
325
324
|
summary: Test Driven Infrastructure
|
data/chef_repo/Cheffile
DELETED
data/chef_repo/Gemfile
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
#!/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# Cucumber-Chef Bootstrap Script
|
|
4
|
-
#
|
|
5
|
-
# Generated <%= Time.now.utc %>
|
|
6
|
-
#
|
|
7
|
-
set -x
|
|
8
|
-
|
|
9
|
-
CUCUMBER_CHEF_BOOTSTRAP_DONE="/.cucumber-chef-bootstrap-finished"
|
|
10
|
-
[ -f ${CUCUMBER_CHEF_BOOTSTRAP_DONE} ] && echo "Already bootstrapped!" && exit
|
|
11
|
-
|
|
12
|
-
export DEBIAN_FRONTEND=noninteractive
|
|
13
|
-
|
|
14
|
-
echo "127.0.0.1 <%= @hostname_full %> <%= @hostname_short %>" | tee -a /etc/hosts
|
|
15
|
-
echo "<%= @hostname_full %>" | tee /etc/hostname
|
|
16
|
-
hostname <%= @hostname_full %>
|
|
17
|
-
|
|
18
|
-
apt-get -y --force-yes update
|
|
19
|
-
apt-get -y --force-yes install build-essential
|
|
20
|
-
|
|
21
|
-
wget http://www.opscode.com/chef/install.sh
|
|
22
|
-
bash install.sh -v <%= @chef_version %>
|
|
23
|
-
rpm -Uvh --nodeps /tmp/*rpm
|
|
24
|
-
export PATH=/opt/chef/embedded/bin/:$PATH
|
|
25
|
-
|
|
26
|
-
mkdir -p /etc/chef/
|
|
27
|
-
mkdir -p /var/log/chef/
|
|
28
|
-
|
|
29
|
-
cat <<EOF > /etc/chef/solo.rb
|
|
30
|
-
file_cache_path "/tmp/chef-solo/"
|
|
31
|
-
cookbook_path %w(/tmp/chef-solo/cookbooks/ /tmp/chef-solo/site-cookbooks/)
|
|
32
|
-
role_path "/tmp/chef-solo/roles/"
|
|
33
|
-
EOF
|
|
34
|
-
|
|
35
|
-
cat <<EOF > /etc/chef/bootstrap.json
|
|
36
|
-
<%= @chef_client_attributes.to_json %>
|
|
37
|
-
EOF
|
|
38
|
-
|
|
39
|
-
cd /tmp/chef-solo/
|
|
40
|
-
gem install bundler --no-ri --no-rdoc
|
|
41
|
-
bundle install --standalone --path vendor/bundle --binstubs
|
|
42
|
-
bin/librarian-chef install
|
|
43
|
-
|
|
44
|
-
chef-solo --config /etc/chef/solo.rb --json-attributes /etc/chef/bootstrap.json --logfile /var/log/chef/chef-solo.log --log_level debug
|
|
45
|
-
|
|
46
|
-
echo -n "Waiting on validation.pem and webui.pem to appear..."
|
|
47
|
-
until [ -f /etc/chef/validation.pem ] && [ -f /etc/chef/webui.pem ]; do
|
|
48
|
-
echo -n "."
|
|
49
|
-
sleep 1
|
|
50
|
-
done
|
|
51
|
-
echo "done."
|
|
52
|
-
|
|
53
|
-
mkdir -p ~/.chef
|
|
54
|
-
cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef
|
|
55
|
-
|
|
56
|
-
apt-get -q -y install expect
|
|
57
|
-
KNIFE_CONFIG_EXP_FILE="/tmp/knife-config.exp"
|
|
58
|
-
cat <<EOF > ${KNIFE_CONFIG_EXP_FILE}
|
|
59
|
-
#!/usr/bin/expect -f
|
|
60
|
-
set timeout 10
|
|
61
|
-
spawn knife configure -i
|
|
62
|
-
expect "Overwrite ${HOME}/.chef/knife.rb" { send "Y\n" }
|
|
63
|
-
expect "Where should I put the config file?" { send "\n" }
|
|
64
|
-
expect "Please enter the chef server URL" { send "\n" }
|
|
65
|
-
expect "Please enter a clientname for the new client" { send "${SUDO_USER}\n" }
|
|
66
|
-
expect "Please enter the existing admin clientname" { send "\n" }
|
|
67
|
-
expect "Please enter the location of the existing admin client" { send "${HOME}/.chef/webui.pem\n" }
|
|
68
|
-
expect "Please enter the validation clientname" { send "\n" }
|
|
69
|
-
expect "Please enter the location of the validation key" { send "${HOME}/.chef/validation.pem\n" }
|
|
70
|
-
expect "Please enter the path to a chef repository" { send "${HOME}/chef_repo\n" }
|
|
71
|
-
interact
|
|
72
|
-
EOF
|
|
73
|
-
chmod +x ${KNIFE_CONFIG_EXP_FILE}
|
|
74
|
-
${KNIFE_CONFIG_EXP_FILE}
|
|
75
|
-
|
|
76
|
-
knife client create <%= @user %> -d -a -f ${HOME}/.chef/<%= @user %>.pem
|
|
77
|
-
|
|
78
|
-
chown -Rv ${SUDO_USER}:${SUDO_USER} ${HOME}
|
|
79
|
-
|
|
80
|
-
touch ${CUCUMBER_CHEF_BOOTSTRAP_DONE}
|