cucumber-chef 3.0.0.rc.2 → 3.0.0.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- 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}
|