testlab 0.5.4 → 0.6.0

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.
Files changed (36) hide show
  1. data/bin/tl +80 -2
  2. data/lib/testlab/container/lifecycle.rb +2 -2
  3. data/lib/testlab/container/status.rb +1 -1
  4. data/lib/testlab/container.rb +3 -3
  5. data/lib/testlab/network/lifecycle.rb +12 -2
  6. data/lib/testlab/node/lifecycle.rb +5 -39
  7. data/lib/testlab/node/ssh.rb +2 -2
  8. data/lib/testlab/node.rb +7 -9
  9. data/lib/testlab/providers/local.rb +74 -2
  10. data/lib/testlab/provisioner.rb +4 -0
  11. data/lib/testlab/provisioners/apt.rb +39 -0
  12. data/lib/testlab/provisioners/apt_cacher_ng.rb +33 -35
  13. data/lib/testlab/{node → provisioners}/bind.rb +51 -24
  14. data/lib/testlab/provisioners/chef_gem.rb +3 -81
  15. data/lib/testlab/provisioners/raring.rb +37 -0
  16. data/lib/testlab/provisioners/resolv.rb +61 -0
  17. data/lib/testlab/provisioners/shell.rb +0 -11
  18. data/lib/testlab/provisioners/templates/apt/bootstrap.erb +11 -0
  19. data/lib/testlab/provisioners/templates/apt_cacher_ng/00proxy.erb +4 -0
  20. data/lib/testlab/provisioners/templates/apt_cacher_ng/bootstrap.erb +7 -0
  21. data/lib/testlab/{node/templates → provisioners/templates/bind}/bind-db.erb +0 -0
  22. data/lib/testlab/{node/templates → provisioners/templates/bind}/bind-zone.erb +0 -0
  23. data/lib/testlab/{node/templates → provisioners/templates/bind}/bind.erb +0 -0
  24. data/lib/testlab/provisioners/templates/chef/omnibus.erb +2 -0
  25. data/lib/testlab/provisioners/templates/chef/omnitruck.erb +1 -1
  26. data/lib/testlab/provisioners/templates/chef/rubygem.erb +0 -0
  27. data/lib/testlab/{node/templates/node-setup.erb → provisioners/templates/raring/bootstrap.erb} +2 -0
  28. data/lib/testlab/provisioners/templates/resolv/resolv.conf.erb +9 -0
  29. data/lib/testlab/version.rb +1 -1
  30. data/lib/testlab.rb +58 -2
  31. data/spec/node_spec.rb +4 -19
  32. data/spec/provisioners/shell_spec.rb +3 -9
  33. data/spec/support/Labfile +29 -10
  34. metadata +17 -11
  35. data/lib/testlab/node/resolv.rb +0 -29
  36. data/lib/testlab/node/templates/resolv.erb +0 -4
@@ -15,10 +15,6 @@ class TestLab
15
15
  @config = (config || Hash.new)
16
16
  @ui = (ui || TestLab.ui)
17
17
 
18
- @config[:version] ||= "latest"
19
- @config[:prereleases] ||= false
20
- @config[:nightlies] ||= false
21
-
22
18
  @ui.logger.debug { "config(#{@config.inspect})" }
23
19
  end
24
20
 
@@ -31,21 +27,9 @@ class TestLab
31
27
  # provision.
32
28
  # @return [Boolean] True if successful.
33
29
  def setup(container)
34
- omnibus_template = File.join(TestLab::Provisioner.template_dir, 'chef', 'omnitruck.erb')
35
- config = {}.merge!({
36
- :server_name => container.fqdn,
37
- :chef_pre_11 => chef_pre_11?,
38
- :chef_solo_attributes => build_chef_solo_attributes(container),
39
- :chef_validator => (chef_pre_11? ? '/etc/chef/validation.pem' : '/etc/chef-server/chef-validator.pem'),
40
- :chef_webui => (chef_pre_11? ? '/etc/chef/webui.pem' : '/etc/chef-server/chef-webui.pem'),
41
- :chef_admin => (chef_pre_11? ? '/etc/chef/admin.pem' : '/etc/chef-server/admin.pem'),
42
- :default_password => "p@ssw01d",
43
- :user => ENV['USER'],
44
- :hostname_short => container.id,
45
- :hostname_full => container.fqdn,
46
- :omnibus_version => omnibus_version
47
- }).merge!(@config)
48
- container.bootstrap(ZTK::Template.render(omnibus_template, config))
30
+ # NOOP
31
+
32
+ true
49
33
  end
50
34
 
51
35
  # ChefGem Provisioner Container Teardown
@@ -59,68 +43,6 @@ class TestLab
59
43
  true
60
44
  end
61
45
 
62
- private
63
-
64
- def build_chef_solo_10_attributes(container)
65
- {
66
- "chef_server" => {
67
- "url" => "https://#{container.fqdn}",
68
- "webui_enabled" => true
69
- },
70
- "run_list" => %w(recipe[chef-server::rubygems-install] recipe[chef-server::apache-proxy])
71
- }
72
- end
73
-
74
- def build_chef_solo_11_attributes(container)
75
- {
76
- "chef-server" => {
77
- "api_fqdn" => container.fqdn,
78
- "nginx" => {
79
- "enable_non_ssl" => true,
80
- "server_name" => container.fqdn,
81
- "url" => "https://#{container.fqdn}"
82
- },
83
- "lb" => {
84
- "fqdn" => container.fqdn
85
- },
86
- "bookshelf" => {
87
- "vip" => container.fqdn
88
- },
89
- "chef_server_webui" => {
90
- "enable" => true
91
- },
92
- "version" => @config[:version],
93
- "prereleases" => @config[:prereleases],
94
- "nightlies" => @config[:nightlies]
95
- },
96
- "run_list" => %w(recipe[chef-server::default])
97
- }
98
- end
99
-
100
- def build_chef_solo_attributes(container)
101
- if chef_pre_11?
102
- build_chef_solo_10_attributes(container)
103
- else
104
- build_chef_solo_11_attributes(container)
105
- end
106
- end
107
-
108
- def chef_pre_11?
109
- if (@config[:version].to_s.downcase != "latest") && (@config[:version].to_f < 11.0)
110
- true
111
- else
112
- false
113
- end
114
- end
115
-
116
- def omnibus_version
117
- if (@config[:version].to_f == 0.1)
118
- "10.12.0"
119
- else
120
- @config[:version]
121
- end
122
- end
123
-
124
46
  end
125
47
 
126
48
  end
@@ -0,0 +1,37 @@
1
+ class TestLab
2
+
3
+ class Provisioner
4
+
5
+ # Ubuntu Raring Provisioner Error Class
6
+ class RaringError < ProvisionerError; end
7
+
8
+ # Ubuntu Raring Provisioner Class
9
+ #
10
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
11
+ class Raring
12
+
13
+ def initialize(config={}, ui=nil)
14
+ @config = (config || Hash.new)
15
+ @ui = (ui || TestLab.ui)
16
+
17
+ @config[:raring] ||= Hash.new
18
+
19
+ @ui.logger.debug { "config(#{@config.inspect})" }
20
+ end
21
+
22
+ # Ubuntu Raring Provisioner Node Setup
23
+ #
24
+ # @param [TestLab::Node] node The node which we want to
25
+ # provision.
26
+ # @return [Boolean] True if successful.
27
+ def node(node)
28
+ @ui.logger.debug { "Ubuntu Raring Provisioner: Node #{node.id}" }
29
+
30
+ bootstrap_template = File.join(TestLab::Provisioner.template_dir, "raring", "bootstrap.erb")
31
+ node.ssh.bootstrap(ZTK::Template.render(bootstrap_template, @config))
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,61 @@
1
+ class TestLab
2
+
3
+ class Provisioner
4
+
5
+ # Resolv Provisioner Error Class
6
+ class ResolvError < ProvisionerError; end
7
+
8
+ # Resolv Provisioner Class
9
+ #
10
+ # @author Zachary Patten <zachary AT jovelabs DOT com>
11
+ class Resolv
12
+
13
+ def initialize(config={}, ui=nil)
14
+ @config = (config || Hash.new)
15
+ @ui = (ui || TestLab.ui)
16
+
17
+ @config[:resolv] ||= Hash.new
18
+ @config[:resolv][:servers] ||= [TestLab::Network.ips, "8.8.8.8", "8.8.4.4" ].flatten.compact.uniq
19
+ @config[:resolv][:search] ||= TestLab::Container.domains.join(' ')
20
+
21
+ @ui.logger.debug { "config(#{@config.inspect})" }
22
+ end
23
+
24
+ # Resolv Provisioner Node Setup
25
+ #
26
+ # @param [TestLab::Node] node The node which we want to provision.
27
+ # @return [Boolean] True if successful.
28
+ def node(node)
29
+ @ui.logger.debug { "RESOLV Provisioner: Node #{node.id}" }
30
+
31
+ render_resolv_conf(node)
32
+
33
+ true
34
+ end
35
+
36
+ # Resolv Provisioner Container Setup
37
+ #
38
+ # @param [TestLab::Container] container The container which we want to
39
+ # provision.
40
+ # @return [Boolean] True if successful.
41
+ def setup(container)
42
+ @ui.logger.debug { "RESOLV Provisioner: Container #{container.id}" }
43
+
44
+ render_resolv_conf(container)
45
+
46
+ true
47
+ end
48
+
49
+ def render_resolv_conf(object)
50
+ resolv_conf_template = File.join(TestLab::Provisioner.template_dir, "resolv", "resolv.conf.erb")
51
+
52
+ object.ssh.file(:target => File.join("/etc/resolv.conf"), :chown => "root:root") do |file|
53
+ file.puts(ZTK::Template.do_not_edit_notice(:message => "TestLab v#{TestLab::VERSION} RESOLVER Configuration"))
54
+ file.puts(ZTK::Template.render(resolv_conf_template, @config))
55
+ end
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+ end
@@ -32,17 +32,6 @@ class TestLab
32
32
  true
33
33
  end
34
34
 
35
- # Shell Provisioner Container Teardown
36
- #
37
- # This is a NO-OP currently.
38
- #
39
- # @return [Boolean] True if successful.
40
- def teardown(container)
41
- # NOOP
42
-
43
- true
44
- end
45
-
46
35
  end
47
36
 
48
37
  end
@@ -0,0 +1,11 @@
1
+ set -x
2
+
3
+ export DEBIAN_FRONTEND="noninteractive"
4
+
5
+ apt-get -y --force-yes update
6
+ <% if !@apt[:install].nil? -%>
7
+ apt-get -y install <%= @apt[:install].flatten.compact.join(' ') %>
8
+ <% end -%>
9
+ <% if !@apt[:remove].nil? -%>
10
+ apt-get -y remove <%= @apt[:remove].flatten.compact.join(' ') %>
11
+ <% end -%>
@@ -0,0 +1,4 @@
1
+ Acquire::HTTP::Proxy "<%= @apt[:cacher_ng][:proxy_url] %>";
2
+ <% [@apt[:cacher_ng][:exclude_hosts]].flatten.compact.each do |exclude_host| -%>
3
+ Acquire::HTTP::Proxy::<%= exclude_host %> "DIRECT";
4
+ <% end -%>
@@ -0,0 +1,7 @@
1
+ set -x
2
+
3
+ export DEBIAN_FRONTEND="noninteractive"
4
+
5
+ apt-get -y install apt-cacher-ng
6
+ service apt-cacher-ng restart || service apt-cacher-ng start
7
+ grep "^MIRROR" /etc/default/lxc || echo 'MIRROR="http://127.0.0.1:3142/archive.ubuntu.com/ubuntu"' | tee -a /etc/default/lxc && service lxc restart || service lxc start
@@ -1,4 +1,6 @@
1
1
  set -x
2
+
3
+ export DEBIAN_FRONTEND="noninteractive"
2
4
  cd /tmp
3
5
  apt-get -y install wget || yum -y install wget
4
6
  rm -fv /tmp/install.sh
@@ -2,7 +2,7 @@
2
2
  <%= ZTK::Template.do_not_edit_notice(:message => "OmniTruck Bootstrap") %>
3
3
  set -x
4
4
 
5
- DEBIAN_FRONTEND="noninteractive"
5
+ export DEBIAN_FRONTEND="noninteractive"
6
6
  CHEF_SOLO_ROOT="/tmp/chef-solo"
7
7
  KNIFE_CONFIG_EXP_FILE="/tmp/knife-config.exp"
8
8
  export DEBIAN_FRONTEND CHEF_SOLO_ROOT KNIFE_CONFIG_EXP_FILE
@@ -1,5 +1,7 @@
1
1
  set -x
2
2
 
3
+ export DEBIAN_FRONTEND="noninteractive"
4
+
3
5
  # Update APT and ensure our required packages are installed
4
6
  apt-get -y update
5
7
  apt-get -y install lxc bridge-utils debootstrap yum iptables ntpdate ntp
@@ -0,0 +1,9 @@
1
+ <% if !@resolv[:domain].nil? -%>
2
+ domain <%= @resolv[:domain] %>
3
+ <% end -%>
4
+ <% if !@resolv[:search].nil? -%>
5
+ search <%= @resolv[:search] %>
6
+ <% end -%>
7
+ <% @resolv[:servers].each do |server| -%>
8
+ nameserver <%= server %>
9
+ <% end -%>
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "0.5.4"
4
+ VERSION = "0.6.0"
5
5
  end
6
6
  end
data/lib/testlab.rb CHANGED
@@ -162,6 +162,46 @@ class TestLab
162
162
  !alive?
163
163
  end
164
164
 
165
+ # Test Lab Up
166
+ #
167
+ # Attempts to up our lab topology. This calls the up method on all of
168
+ # our nodes.
169
+ #
170
+ # @return [Boolean] True if successful.
171
+ def up
172
+ @labfile.nodes.map do |node|
173
+ node.up
174
+ node.networks.map do |network|
175
+ network.up
176
+ end
177
+ node.containers.map do |container|
178
+ container.up
179
+ end
180
+ end
181
+
182
+ true
183
+ end
184
+
185
+ # Test Lab Down
186
+ #
187
+ # Attempts to down our lab topology. This calls the down method on all of
188
+ # our nodes.
189
+ #
190
+ # @return [Boolean] True if successful.
191
+ def down
192
+ @labfile.nodes.map do |node|
193
+ node.containers.map do |container|
194
+ container.down
195
+ end
196
+ node.networks.map do |network|
197
+ network.down
198
+ end
199
+ node.down
200
+ end
201
+
202
+ true
203
+ end
204
+
165
205
  # Test Lab Setup
166
206
  #
167
207
  # Attempts to setup our lab topology. This calls the setup method on all of
@@ -169,7 +209,15 @@ class TestLab
169
209
  #
170
210
  # @return [Boolean] True if successful.
171
211
  def setup
172
- node_method_proxy(:setup)
212
+ @labfile.nodes.map do |node|
213
+ node.setup
214
+ node.networks.map do |network|
215
+ network.setup
216
+ end
217
+ node.containers.map do |container|
218
+ container.setup
219
+ end
220
+ end
173
221
 
174
222
  true
175
223
  end
@@ -181,7 +229,15 @@ class TestLab
181
229
  #
182
230
  # @return [Boolean] True if successful.
183
231
  def teardown
184
- node_method_proxy(:teardown)
232
+ @labfile.nodes.map do |node|
233
+ node.containers.map do |container|
234
+ container.teardown
235
+ end
236
+ node.networks.map do |network|
237
+ network.teardown
238
+ end
239
+ node.teardown
240
+ end
185
241
 
186
242
  true
187
243
  end
data/spec/node_spec.rb CHANGED
@@ -43,22 +43,6 @@ describe TestLab::Node do
43
43
  end
44
44
  end
45
45
 
46
- describe "#bind_setup" do
47
- it "should setup bind" do
48
- subject.ssh.stub(:exec) { true }
49
- subject.ssh.stub(:file).and_yield(StringIO.new)
50
- subject.bind_setup
51
- end
52
- end
53
-
54
- describe "#build_resolv_conf" do
55
- it "should build resolv.conf" do
56
- subject.ssh.stub(:exec) { true }
57
- subject.ssh.stub(:file).and_yield(StringIO.new)
58
- subject.build_resolv_conf
59
- end
60
- end
61
-
62
46
  describe "#status" do
63
47
  it "should return a hash of status information about the node" do
64
48
  subject.instance_variable_get(:@provider).stub(:state) { :not_created }
@@ -112,11 +96,10 @@ describe TestLab::Node do
112
96
 
113
97
  describe "setup" do
114
98
  it "should setup the node" do
99
+ subject.provisioners = Array.new
100
+ subject.containers.each { |c| c.provisioners = Array.new }
115
101
  subject.ssh.stub(:bootstrap) { true }
116
102
  subject.stub(:route_setup) { true }
117
- subject.stub(:build_resolv_conf) { true }
118
- subject.stub(:bind_setup) { true }
119
- subject.stub(:bind_reload) { true }
120
103
  subject.stub(:create) { true }
121
104
  subject.stub(:up) { true }
122
105
  subject.containers.each do |container|
@@ -131,6 +114,8 @@ describe TestLab::Node do
131
114
 
132
115
  describe "teardown" do
133
116
  it "should teardown the node" do
117
+ subject.provisioners = Array.new
118
+ subject.containers.each { |c| c.provisioners = Array.new }
134
119
  subject.stub(:route_setup) { true }
135
120
  subject.stub(:down) { true }
136
121
  subject.stub(:destroy) { true }
@@ -30,7 +30,7 @@ describe TestLab::Provisioner::Shell do
30
30
  describe "class" do
31
31
 
32
32
  it "should be an instance of TestLab::Provisioner::Shell" do
33
- subject.provisioners.first.new(subject.config, @ui).should be_an_instance_of TestLab::Provisioner::Shell
33
+ subject.provisioners.last.new(subject.config, @ui).should be_an_instance_of TestLab::Provisioner::Shell
34
34
  end
35
35
 
36
36
  end
@@ -42,7 +42,7 @@ describe TestLab::Provisioner::Shell do
42
42
  it "should provision the container" do
43
43
  subject.node.ssh.stub(:file).and_yield(StringIO.new)
44
44
  subject.lxc.stub(:attach) { "" }
45
- subject.provisioners.first.new(subject.config, @ui).setup(subject)
45
+ subject.provisioners.last.new(subject.config, @ui).setup(subject)
46
46
  end
47
47
  end
48
48
 
@@ -50,17 +50,11 @@ describe TestLab::Provisioner::Shell do
50
50
  it "should raise an exception" do
51
51
  subject.node.ssh.stub(:file).and_yield(StringIO.new)
52
52
  subject.lxc.stub(:attach) { "No such file or directory" }
53
- lambda{ subject.provisioners.first.new(subject.config, @ui).setup(subject) }.should raise_error TestLab::ContainerError
53
+ lambda{ subject.provisioners.last.new(subject.config, @ui).setup(subject) }.should raise_error TestLab::ContainerError
54
54
  end
55
55
  end
56
56
  end
57
57
 
58
- describe "teardown" do
59
- it "should decomission the container" do
60
- subject.provisioners.first.new(subject.config, @ui).teardown(subject)
61
- end
62
- end
63
-
64
58
  end
65
59
 
66
60
  end
data/spec/support/Labfile CHANGED
@@ -9,17 +9,18 @@ EOF
9
9
 
10
10
  REPO = File.dirname(__FILE__)
11
11
 
12
- config Hash[
12
+ config ({
13
13
  :domain => "default.zone",
14
14
  :repo => REPO
15
- ]
15
+ })
16
16
 
17
17
  node :localhost do
18
18
 
19
- components %w(resolv bind)
20
-
21
- provider TestLab::Provider::Vagrant
22
- config Hash[
19
+ provider TestLab::Provider::Vagrant
20
+ provisioners [
21
+ TestLab::Provisioner::Bind
22
+ ]
23
+ config ({
23
24
  :vagrant => {
24
25
  :id => "mytestlab-#{ENV['USER']}".downcase,
25
26
  :ip => "192.168.255.1",
@@ -29,7 +30,7 @@ node :localhost do
29
30
  :memory => 512,
30
31
  :file => REPO
31
32
  }
32
- ]
33
+ })
33
34
 
34
35
  network 'testnet' do
35
36
  address '192.168.255.254/16'
@@ -42,6 +43,12 @@ node :localhost do
42
43
  distro "ubuntu"
43
44
  release "precise"
44
45
 
46
+ provisioners [
47
+ TestLab::Provisioner::Resolv,
48
+ TestLab::Provisioner::AptCacherNG,
49
+ TestLab::Provisioner::Apt
50
+ ]
51
+
45
52
  interface do
46
53
  name :eth0
47
54
  network_id 'testnet'
@@ -61,6 +68,12 @@ node :localhost do
61
68
  distro "ubuntu"
62
69
  release "precise"
63
70
 
71
+ provisioners [
72
+ TestLab::Provisioner::Resolv,
73
+ TestLab::Provisioner::AptCacherNG,
74
+ TestLab::Provisioner::Apt
75
+ ]
76
+
64
77
  interface do
65
78
  name :eth0
66
79
  network_id 'testnet'
@@ -73,11 +86,17 @@ node :localhost do
73
86
  distro "ubuntu"
74
87
  release "precise"
75
88
 
76
- provisioners [TestLab::Provisioner::Shell]
77
- config Hash[
89
+ provisioners [
90
+ TestLab::Provisioner::Resolv,
91
+ TestLab::Provisioner::AptCacherNG,
92
+ TestLab::Provisioner::Apt,
93
+ TestLab::Provisioner::Shell
94
+ ]
95
+
96
+ config ({
78
97
  :shell => "/bin/bash",
79
98
  :script => shell_provision_script
80
- ]
99
+ })
81
100
 
82
101
  interface do
83
102
  name :eth0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-12 00:00:00.000000000 Z
12
+ date: 2013-06-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
@@ -229,32 +229,38 @@ files:
229
229
  - lib/testlab/network/status.rb
230
230
  - lib/testlab/node.rb
231
231
  - lib/testlab/node/actions.rb
232
- - lib/testlab/node/bind.rb
233
232
  - lib/testlab/node/class_methods.rb
234
233
  - lib/testlab/node/lifecycle.rb
235
234
  - lib/testlab/node/lxc.rb
236
235
  - lib/testlab/node/method_missing.rb
237
- - lib/testlab/node/resolv.rb
238
236
  - lib/testlab/node/ssh.rb
239
237
  - lib/testlab/node/status.rb
240
- - lib/testlab/node/templates/bind-db.erb
241
- - lib/testlab/node/templates/bind-zone.erb
242
- - lib/testlab/node/templates/bind.erb
243
- - lib/testlab/node/templates/node-setup.erb
244
- - lib/testlab/node/templates/resolv.erb
245
238
  - lib/testlab/provider.rb
246
239
  - lib/testlab/providers/aws.rb
247
240
  - lib/testlab/providers/local.rb
248
241
  - lib/testlab/providers/templates/vagrant/Vagrantfile.erb
249
242
  - lib/testlab/providers/vagrant.rb
250
243
  - lib/testlab/provisioner.rb
244
+ - lib/testlab/provisioners/apt.rb
251
245
  - lib/testlab/provisioners/apt_cacher_ng.rb
246
+ - lib/testlab/provisioners/bind.rb
252
247
  - lib/testlab/provisioners/chef_gem.rb
253
248
  - lib/testlab/provisioners/omnibus.rb
254
249
  - lib/testlab/provisioners/omnitruck.rb
250
+ - lib/testlab/provisioners/raring.rb
251
+ - lib/testlab/provisioners/resolv.rb
255
252
  - lib/testlab/provisioners/shell.rb
253
+ - lib/testlab/provisioners/templates/apt/bootstrap.erb
254
+ - lib/testlab/provisioners/templates/apt_cacher_ng/00proxy.erb
255
+ - lib/testlab/provisioners/templates/apt_cacher_ng/bootstrap.erb
256
+ - lib/testlab/provisioners/templates/bind/bind-db.erb
257
+ - lib/testlab/provisioners/templates/bind/bind-zone.erb
258
+ - lib/testlab/provisioners/templates/bind/bind.erb
256
259
  - lib/testlab/provisioners/templates/chef/omnibus.erb
257
260
  - lib/testlab/provisioners/templates/chef/omnitruck.erb
261
+ - lib/testlab/provisioners/templates/chef/rubygem.erb
262
+ - lib/testlab/provisioners/templates/raring/bootstrap.erb
263
+ - lib/testlab/provisioners/templates/resolv/resolv.conf.erb
258
264
  - lib/testlab/user.rb
259
265
  - lib/testlab/user/lifecycle.rb
260
266
  - lib/testlab/utility.rb
@@ -287,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
293
  version: '0'
288
294
  segments:
289
295
  - 0
290
- hash: 2280277308738300092
296
+ hash: 2170053698694927612
291
297
  required_rubygems_version: !ruby/object:Gem::Requirement
292
298
  none: false
293
299
  requirements:
@@ -296,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
302
  version: '0'
297
303
  segments:
298
304
  - 0
299
- hash: 2280277308738300092
305
+ hash: 2170053698694927612
300
306
  requirements: []
301
307
  rubyforge_project:
302
308
  rubygems_version: 1.8.25
@@ -1,29 +0,0 @@
1
- class TestLab
2
- class Node
3
-
4
- module Resolv
5
- require 'tempfile'
6
-
7
- # Builds the main resolv configuration sections
8
- def build_resolv_main_conf(file)
9
- resolv_conf_template = File.join(self.class.template_dir, "resolv.erb")
10
-
11
- context = {
12
- :servers => [TestLab::Network.ips, "8.8.8.8", "8.8.4.4" ].flatten,
13
- :search => TestLab::Container.domains.join(' ')
14
- }
15
-
16
- file.puts(ZTK::Template.do_not_edit_notice(:message => "TestLab v#{TestLab::VERSION} RESOLVER Configuration"))
17
- file.puts(ZTK::Template.render(resolv_conf_template, context))
18
- end
19
-
20
- def build_resolv_conf
21
- self.ssh.file(:target => File.join("/etc/resolv.conf"), :chown => "root:root") do |file|
22
- build_resolv_main_conf(file)
23
- end
24
- end
25
-
26
- end
27
-
28
- end
29
- end
@@ -1,4 +0,0 @@
1
- search <%= @search %>
2
- <% @servers.each do |server| -%>
3
- nameserver <%= server %>
4
- <% end -%>