testlab 1.2.3 → 1.3.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.
data/README.md CHANGED
@@ -280,7 +280,7 @@ For more information see the TestLab Documentation, `testlab-repo`, command-line
280
280
 
281
281
  # EXAMPLE USE
282
282
 
283
- * See the `testlab-repo` - https://github.com/zpatten/testlab-repo
283
+ * See the `testlab-repo` - https://github.com/lookout/testlab-repo
284
284
 
285
285
  # RUBIES TESTED AGAINST
286
286
 
@@ -298,15 +298,15 @@ IRC:
298
298
 
299
299
  Documentation:
300
300
 
301
- * http://zpatten.github.io/testlab/
301
+ * http://lookout.github.io/testlab/
302
302
 
303
303
  Source:
304
304
 
305
- * https://github.com/zpatten/testlab
305
+ * https://github.com/lookout/testlab
306
306
 
307
307
  Issues:
308
308
 
309
- * https://github.com/zpatten/testlab/issues
309
+ * https://github.com/lookout/testlab/issues
310
310
 
311
311
  # LICENSE
312
312
 
@@ -57,6 +57,13 @@ node 'vagrant' do
57
57
  address '10.128.0.254/16'
58
58
  mac '00:00:5e:63:b5:9f'
59
59
  end
60
+
61
+ interface do
62
+ network_id 'labnet'
63
+ name 'eth1'
64
+ address '10.128.0.253/16'
65
+ mac '00:00:5e:63:b5:9e'
66
+ end
60
67
  end
61
68
 
62
69
  end
@@ -53,7 +53,7 @@ class TestLab
53
53
  'lxc.network.hwaddr' => interface.mac,
54
54
  'lxc.network.ipv4' => "#{interface.ip}/#{interface.cidr} #{interface.netmask}"
55
55
  ]
56
- if (interface.primary == true) || (interfaces.count == 1)
56
+ if (self.primary_interface == interface)
57
57
  networks.last.merge!('lxc.network.ipv4.gateway' => :auto)
58
58
  end
59
59
  end
@@ -43,6 +43,7 @@ class TestLab
43
43
  file.puts(ZTK::Template.render(apt_conf_d_proxy_file_template, context))
44
44
  end
45
45
 
46
+ node.exec(%(sudo mkdir -pv #{File.dirname(apt_cacher_ng_security_conf_file)}))
46
47
  node.file(:target => apt_cacher_ng_security_conf_file, :chown => "root:root", :chmod => "0644") do |file|
47
48
  file.puts(ZTK::Template.render(apt_cacher_ng_security_conf_template, context))
48
49
  end
@@ -52,16 +53,6 @@ class TestLab
52
53
  true
53
54
  end
54
55
 
55
- # APT-CacherNG: Node Deprovision
56
- #
57
- # @param [TestLab::Node] node The node which we want to deprovision.
58
- # @return [Boolean] True if successful.
59
- def on_node_deprovision(node)
60
- node.bootstrap(ZTK::Template.render(deprovision_template, @config))
61
-
62
- true
63
- end
64
-
65
56
  # APT-CacherNG: Container Provision
66
57
  #
67
58
  # @param [TestLab::Container] container The container which we want to
@@ -94,21 +85,17 @@ class TestLab
94
85
  end
95
86
 
96
87
  def apt_conf_d_proxy_file_template
97
- File.join(TestLab::Provisioner.template_dir, "apt_cacher_ng", "00proxy.erb")
88
+ File.join(TestLab::Provisioner.template_dir, 'apt_cacher_ng', '00proxy.erb')
98
89
  end
99
90
 
100
91
  def apt_cacher_ng_security_conf_template
101
- File.join(TestLab::Provisioner.template_dir, "apt_cacher_ng", "security.conf.erb")
92
+ File.join(TestLab::Provisioner.template_dir, 'apt_cacher_ng', 'security.conf.erb')
102
93
  end
103
94
 
104
95
  def provision_template
105
96
  File.join(TestLab::Provisioner.template_dir, 'apt_cacher_ng', 'provision.erb')
106
97
  end
107
98
 
108
- def deprovision_template
109
- File.join(TestLab::Provisioner.template_dir, 'apt_cacher_ng', 'deprovision.erb')
110
- end
111
-
112
99
  end
113
100
 
114
101
  end
@@ -18,7 +18,6 @@ class TestLab
18
18
  @config[:bind][:domain] ||= "tld.invalid"
19
19
  @config[:bind][:forwarders] ||= %w(8.8.8.8 8.8.4.4)
20
20
 
21
-
22
21
  @ui.logger.debug { "config(#{@config.inspect})" }
23
22
  end
24
23
 
@@ -34,18 +33,6 @@ class TestLab
34
33
  true
35
34
  end
36
35
 
37
- # Bind: Node Deprovision
38
- #
39
- # @param [TestLab::Node] node The node which we want to deprovision.
40
- # @return [Boolean] True if successful.
41
- def on_node_deprovision(node)
42
- @ui.logger.debug { "BIND Deprovisioner: Node #{node.id}" }
43
-
44
- node.exec(%(sudo DEBIAN_FRONTEND="noninteractive" apt-get -y purge bind9))
45
-
46
- true
47
- end
48
-
49
36
  # Bind: Container Up
50
37
  #
51
38
  # @param [TestLab::Container] container The container which just came online.
@@ -17,10 +17,10 @@ class TestLab
17
17
  @config[:resolv] ||= Hash.new
18
18
 
19
19
  @config[:resolv][:servers] ||= Array.new
20
- @config[:resolv][:servers].concat([TestLab::Network.ips])
20
+ @config[:resolv][:servers].unshift([TestLab::Network.ips]).flatten!
21
21
 
22
22
  @config[:resolv][:search] ||= Array.new
23
- @config[:resolv][:search].concat([TestLab::Container.domains])
23
+ @config[:resolv][:search].unshift([TestLab::Container.domains]).flatten!
24
24
 
25
25
  @ui.logger.debug { "config(#{@config.inspect})" }
26
26
  end
@@ -32,9 +32,12 @@ class TestLab
32
32
  def on_node_provision(node)
33
33
  @ui.logger.debug { "RESOLV Provisioner: Node #{node.id}" }
34
34
 
35
- @config[:resolv][:servers] = %w(127.0.0.1)
35
+ @config[:resolv].merge!(
36
+ :servers => %w(127.0.0.1),
37
+ :object => :node
38
+ )
36
39
 
37
- render_resolv_conf(node)
40
+ node.bootstrap(ZTK::Template.render(provision_template, @config))
38
41
 
39
42
  true
40
43
  end
@@ -48,22 +51,19 @@ class TestLab
48
51
  def on_container_provision(container)
49
52
  @ui.logger.debug { "RESOLV Provisioner: Container #{container.id}" }
50
53
 
51
- render_resolv_conf(container)
54
+ @config[:resolv].merge!(
55
+ :object => :container
56
+ )
52
57
 
53
- true
54
- end
58
+ container.bootstrap(ZTK::Template.render(provision_template, @config))
55
59
 
56
- def render_resolv_conf(object)
57
- object.file(:target => %(/etc/resolv.conf), :chown => "root:root") do |file|
58
- file.puts(ZTK::Template.do_not_edit_notice(:message => "TestLab v#{TestLab::VERSION} RESOLVER Configuration"))
59
- file.puts(ZTK::Template.render(resolv_conf_template, @config))
60
- end
60
+ true
61
61
  end
62
62
 
63
63
  private
64
64
 
65
- def resolv_conf_template
66
- File.join(TestLab::Provisioner.template_dir, 'resolv', 'resolv.conf.erb')
65
+ def provision_template
66
+ File.join(TestLab::Provisioner.template_dir, 'resolv', 'provision.erb')
67
67
  end
68
68
 
69
69
  end
@@ -1,19 +1,24 @@
1
1
  set -x
2
2
  set -e
3
3
 
4
- [[ -f /.testlab-apt-provision ]] && exit 0
5
-
6
4
  export DEBIAN_FRONTEND="noninteractive"
7
5
 
8
6
  apt-get -y update
7
+
9
8
  <% if !@apt[:install].nil? -%>
10
- apt-get -y install <%= @apt[:install].flatten.compact.join(' ') %>
9
+ <% @apt[:install].flatten.compact.each do |package| -%>
10
+ dpkg --status <%= package %> &> /dev/null || apt-get -y install <%= package %>
11
11
  <% end -%>
12
+ <% end -%>
13
+
12
14
  <% if !@apt[:remove].nil? -%>
13
- apt-get -y remove <%= @apt[:remove].flatten.compact.join(' ') %>
15
+ <% @apt[:remove].flatten.compact.each do |package| -%>
16
+ dpkg --status <%= package %> &> /dev/null && apt-get -y remove <%= package %>
14
17
  <% end -%>
15
- <% if !@apt[:purge].nil? -%>
16
- apt-get -y purge <%= @apt[:purge].flatten.compact.join(' ') %>
17
18
  <% end -%>
18
19
 
19
- touch /.testlab-apt-provision
20
+ <% if !@apt[:purge].nil? -%>
21
+ <% @apt[:purge].flatten.compact.each do |package| -%>
22
+ dpkg --status <%= package %> &> /dev/null && apt-get -y purge <%= package %>
23
+ <% end -%>
24
+ <% end -%>
@@ -1,12 +1,10 @@
1
1
  set -x
2
2
  set -e
3
3
 
4
- [[ -f /.testlab-apt-cacher-ng-provision ]] && exit 0
5
-
6
4
  export DEBIAN_FRONTEND="noninteractive"
7
5
 
8
- apt-get -y install apt-cacher-ng
9
- service apt-cacher-ng restart || service apt-cacher-ng start
10
- grep "^MIRROR" /etc/default/lxc || (echo 'MIRROR="http://127.0.0.1:3142/archive.ubuntu.com/ubuntu"' | tee -a /etc/default/lxc)
11
-
12
- touch /.testlab-apt-cacher-ng-provision
6
+ if ! dpkg --status apt-cacher-ng &> /dev/null; then
7
+ apt-get -y install apt-cacher-ng
8
+ service apt-cacher-ng restart || service apt-cacher-ng start
9
+ grep "^MIRROR" /etc/default/lxc || (echo 'MIRROR="http://127.0.0.1:3142/archive.ubuntu.com/ubuntu"' | tee -a /etc/default/lxc)
10
+ fi
@@ -1,13 +1,13 @@
1
1
  set -x
2
2
  set -e
3
3
 
4
- [[ -f /.testlab-raring-provision ]] && exit 0
5
-
6
4
  export DEBIAN_FRONTEND="noninteractive"
7
5
 
8
6
  # Update APT and ensure our required packages are installed
9
7
  apt-get -y update
10
- apt-get -y install lxc bridge-utils debootstrap yum iptables iptables-persistent ntpdate ntp pbzip2
8
+ <% %w(lxc bridge-utils debootstrap yum iptables iptables-persistent ntpdate ntp pbzip2).each do |package| -%>
9
+ dpkg --status <%= package %> &> /dev/null || apt-get -y install <%= package %>
10
+ <% end -%>
11
11
 
12
12
  # Ensure the default lxc networking services are off
13
13
  service lxc-net stop || (service lxc-net start ; service lxc-net stop)
@@ -21,7 +21,8 @@ sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
21
21
  sysctl -w net.ipv4.ip_forward=1
22
22
 
23
23
  # Install an iptable NAT rule
24
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
25
- iptables-save | tee /etc/iptables/rules.v4
26
24
 
27
- touch /.testlab-raring-provision
25
+ if ! iptables -t nat -v --list | grep "MASQUERADE"; then
26
+ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
27
+ iptables-save | tee /etc/iptables/rules.v4
28
+ fi
@@ -1,3 +1,10 @@
1
+ set -x
2
+
3
+ dpkg --status bind9 &> /dev/null || <%= (@resolv[:object] == :container).inspect %>
4
+
5
+ if [ $? -eq 0 ]; then
6
+ cat << EOF | tee /etc/resolv.conf
7
+ <%= ZTK::Template.do_not_edit_notice(:message => "TestLab Resolv Provisioner") %>
1
8
  <% if !@resolv[:domain].nil? -%>
2
9
  domain <%= @resolv[:domain] %>
3
10
  <% end -%>
@@ -9,3 +16,5 @@ search <%= @resolv[:search].flatten.compact.uniq.join(' ') %>
9
16
  nameserver <%= server %>
10
17
  <% end -%>
11
18
  <% end -%>
19
+ EOF
20
+ fi
@@ -1,6 +1,6 @@
1
1
  class TestLab
2
2
  unless const_defined?(:VERSION)
3
3
  # TestLab Gem Version
4
- VERSION = "1.2.3"
4
+ VERSION = "1.3.0"
5
5
  end
6
6
  end
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: 1.2.3
4
+ version: 1.3.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-07-27 00:00:00.000000000 Z
12
+ date: 2013-07-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gli
@@ -289,7 +289,6 @@ files:
289
289
  - lib/testlab/provisioners/shell.rb
290
290
  - lib/testlab/provisioners/templates/apt/provision.erb
291
291
  - lib/testlab/provisioners/templates/apt_cacher_ng/00proxy.erb
292
- - lib/testlab/provisioners/templates/apt_cacher_ng/deprovision.erb
293
292
  - lib/testlab/provisioners/templates/apt_cacher_ng/provision.erb
294
293
  - lib/testlab/provisioners/templates/apt_cacher_ng/security.conf.erb
295
294
  - lib/testlab/provisioners/templates/bind/bind-db.erb
@@ -300,7 +299,7 @@ files:
300
299
  - lib/testlab/provisioners/templates/chef/ruby_gem_client.erb
301
300
  - lib/testlab/provisioners/templates/chef/ruby_gem_server.erb
302
301
  - lib/testlab/provisioners/templates/raring/provision.erb
303
- - lib/testlab/provisioners/templates/resolv/resolv.conf.erb
302
+ - lib/testlab/provisioners/templates/resolv/provision.erb
304
303
  - lib/testlab/support.rb
305
304
  - lib/testlab/support/execution.rb
306
305
  - lib/testlab/support/lifecycle.rb
@@ -339,7 +338,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
339
338
  version: '0'
340
339
  segments:
341
340
  - 0
342
- hash: -283213225295333817
341
+ hash: -2931685983354543503
343
342
  required_rubygems_version: !ruby/object:Gem::Requirement
344
343
  none: false
345
344
  requirements:
@@ -348,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
347
  version: '0'
349
348
  segments:
350
349
  - 0
351
- hash: -283213225295333817
350
+ hash: -2931685983354543503
352
351
  requirements: []
353
352
  rubyforge_project:
354
353
  rubygems_version: 1.8.25
@@ -1,6 +0,0 @@
1
- set -x
2
- set -e
3
-
4
- export DEBIAN_FRONTEND="noninteractive"
5
-
6
- apt-get -y purge apt-cacher-ng