kitchen-lxc 0.0.1.beta2 → 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +0 -3
- data/README.md +19 -58
- data/kitchen-lxc.gemspec +3 -3
- data/lib/kitchen/driver/lxc.rb +22 -50
- metadata +25 -32
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 418715ee25b2e76bc05bdb529246672c285a4a03
|
|
4
|
+
data.tar.gz: b6e88dd94c7188b5c42dd26b43bf5f918ffa9aaf
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 4a257a729d514716151fc6f81ea5efb460dcf640daf59624828d2afafa9009dc5aac6fbe34c91df51c5c32a10cd3eaf005ed8426d3b568a32a17bc7a637871c0
|
|
7
|
+
data.tar.gz: 0733d4006ea2409a31a359899349f4f932c54f86da727b45e6cc234aeaf2fd6caec644a77c4a36fdfe4a4a95e3c8eff267945bcdf81c143373fed2d7f9f1b836
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# Kitchen LXC
|
|
2
2
|
|
|
3
3
|
The LXC driver for the Chef convergence integration test harness,
|
|
4
|
-
[Test Kitchen](https://github.com/
|
|
4
|
+
[Test Kitchen](https://github.com/test-kitchen).
|
|
5
5
|
|
|
6
|
-
Kitchen LXC creates
|
|
7
|
-
suite.
|
|
6
|
+
Kitchen LXC creates an ephemeral clone of a "base" LXC container to
|
|
7
|
+
run a test suite.
|
|
8
|
+
|
|
9
|
+
You may want to use the
|
|
10
|
+
[Docker driver](https://github.com/portertech/kitchen-docker).
|
|
8
11
|
|
|
9
12
|
## Installation
|
|
10
13
|
|
|
@@ -33,28 +36,11 @@ The password used to login to the container.
|
|
|
33
36
|
|
|
34
37
|
Defaults to "root".
|
|
35
38
|
|
|
36
|
-
#### dhcp_lease_file
|
|
37
|
-
The DHCP lease file used to determine the container IP address.
|
|
38
|
-
|
|
39
|
-
Defaults to the first match for "/var/lib/misc/dnsmasq*leases".
|
|
40
|
-
|
|
41
|
-
#### ipaddress
|
|
42
|
-
You may specify an IP address for the container, within the
|
|
43
|
-
10.0.3.0/24 subnet, instead of using DHCP.
|
|
44
|
-
|
|
45
39
|
#### port
|
|
46
40
|
The SSH port used to login to the container.
|
|
47
41
|
|
|
48
42
|
Defaults to 22.
|
|
49
43
|
|
|
50
|
-
#### overlay
|
|
51
|
-
The directory to use for the rootfs overlay.
|
|
52
|
-
|
|
53
|
-
Defaults to "/tmp".
|
|
54
|
-
|
|
55
|
-
#### device
|
|
56
|
-
The size (MB) of the block device for the rootfs overlay.
|
|
57
|
-
|
|
58
44
|
### Example
|
|
59
45
|
|
|
60
46
|
`.kitchen.local.yml`
|
|
@@ -72,38 +58,19 @@ platforms:
|
|
|
72
58
|
```
|
|
73
59
|
|
|
74
60
|
```
|
|
75
|
-
$
|
|
76
|
-
-----> Starting Kitchen
|
|
77
|
-
-----> Creating <default-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
Setting up ephemeral container...
|
|
89
|
-
Starting up the container...
|
|
90
|
-
stack-ubuntu-cb87c2 is running
|
|
91
|
-
You connect with the command:
|
|
92
|
-
sudo lxc-console -n stack-ubuntu-cb87c2
|
|
93
|
-
[kitchen::driver::lxc command] END (0m1.91s)
|
|
94
|
-
Finished creating <stack-ubuntu> (0m4.99s).
|
|
95
|
-
-----> Kitchen is finished. (0m9.99s)
|
|
96
|
-
$ bundle exec kitchen destroy
|
|
97
|
-
-----> Starting Kitchen
|
|
98
|
-
-----> Destroying <default-ubuntu>
|
|
99
|
-
[kitchen::driver::lxc command] BEGIN (lxc-awesome-ephemeral -c -o tk-ubuntu-1204 -n default-ubuntu-a0c75e)
|
|
100
|
-
[kitchen::driver::lxc command] END (0m3.41s)
|
|
101
|
-
Finished destroying <default-ubuntu> (0m3.48s).
|
|
102
|
-
-----> Destroying <stack-ubuntu>
|
|
103
|
-
[kitchen::driver::lxc command] BEGIN (lxc-awesome-ephemeral -c -o tk-ubuntu-1204 -n stack-ubuntu-cb87c2)
|
|
104
|
-
[kitchen::driver::lxc command] END (0m3.44s)
|
|
105
|
-
Finished destroying <stack-ubuntu> (0m3.52s).
|
|
106
|
-
-----> Kitchen is finished. (0m7.03s)
|
|
61
|
+
$ sudo kitchen create default
|
|
62
|
+
-----> Starting Kitchen (v1.0.0.beta.4)
|
|
63
|
+
-----> Creating <default-ubuntu_1204>
|
|
64
|
+
Finished creating <default-ubuntu_1204> (0m4.50s).
|
|
65
|
+
-----> Kitchen is finished. (0m4.54s)
|
|
66
|
+
$ sudo kitchen destroy default
|
|
67
|
+
-----> Starting Kitchen (v1.0.0.beta.4)
|
|
68
|
+
-----> Destroying <default-ubuntu_1204>
|
|
69
|
+
Finished destroying <default-ubuntu_1204> (0m0.32s).
|
|
70
|
+
-----> Kitchen is finished. (0m0.35s)
|
|
71
|
+
$ sudo kitchen list
|
|
72
|
+
Instance Driver Provisioner Last Action
|
|
73
|
+
default-ubuntu_1204 Lxc Chef Solo <Not Created>
|
|
107
74
|
```
|
|
108
75
|
|
|
109
76
|
## Contributing
|
|
@@ -114,10 +81,4 @@ $ bundle exec kitchen destroy
|
|
|
114
81
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
115
82
|
5. Create new Pull Request
|
|
116
83
|
|
|
117
|
-
## Authors
|
|
118
|
-
|
|
119
|
-
Author:: Sean Porter (<portertech@gmail.com>)
|
|
120
|
-
|
|
121
|
-
Author:: Bryan W. Berry (<bryan.berry@gmail.com>)
|
|
122
|
-
|
|
123
84
|
See LICENSE.txt for licensing details
|
data/kitchen-lxc.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |gem|
|
|
2
2
|
gem.name = "kitchen-lxc"
|
|
3
|
-
gem.version = "0.0.1
|
|
3
|
+
gem.version = "0.0.1"
|
|
4
4
|
gem.authors = ["Sean Porter"]
|
|
5
5
|
gem.email = ["portertech@gmail.com"]
|
|
6
6
|
gem.description = "LXC driver for Test Kitchen"
|
|
@@ -9,8 +9,8 @@ Gem::Specification.new do |gem|
|
|
|
9
9
|
gem.license = "MIT"
|
|
10
10
|
gem.has_rdoc = false
|
|
11
11
|
|
|
12
|
-
gem.add_dependency("test-kitchen", ">= 1.0.0.
|
|
13
|
-
gem.add_dependency("
|
|
12
|
+
gem.add_dependency("test-kitchen", ">= 1.0.0.beta.4")
|
|
13
|
+
gem.add_dependency("elecksee", ">= 1.0.14")
|
|
14
14
|
|
|
15
15
|
gem.add_development_dependency("rake")
|
|
16
16
|
|
data/lib/kitchen/driver/lxc.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
require "securerandom"
|
|
2
1
|
require "kitchen"
|
|
2
|
+
require "elecksee/ephemeral"
|
|
3
|
+
|
|
4
|
+
::Lxc.use_sudo = true
|
|
3
5
|
|
|
4
6
|
module Kitchen
|
|
5
7
|
|
|
@@ -7,66 +9,36 @@ module Kitchen
|
|
|
7
9
|
|
|
8
10
|
class Lxc < Kitchen::Driver::SSHBase
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
default_config :
|
|
13
|
-
default_config :dhcp_lease_file, Dir["/var/lib/misc/dnsmasq*leases"][0]
|
|
14
|
-
default_config :port, "22"
|
|
15
|
-
default_config :username, "root" # most LXC templates use this
|
|
16
|
-
default_config :password, "root" # most LXC templates use this
|
|
12
|
+
default_config :use_sudo, true
|
|
13
|
+
default_config :username, "root" # most LXC templates use this
|
|
14
|
+
default_config :password, "root" # most LXC templates use this
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
state[:overlay] = config[:overlay] if config[:overlay]
|
|
21
|
-
start_container(state)
|
|
22
|
-
state[:hostname] = container_ip(state)
|
|
23
|
-
wait_for_sshd(state[:hostname])
|
|
16
|
+
default_config :original do |driver|
|
|
17
|
+
driver[:base_container]
|
|
24
18
|
end
|
|
25
19
|
|
|
26
|
-
|
|
27
|
-
destroy_container(state) if state[:container_id]
|
|
28
|
-
end
|
|
20
|
+
no_parallel_for :create
|
|
29
21
|
|
|
30
|
-
|
|
22
|
+
def create(state)
|
|
23
|
+
container = ::Lxc::Ephemeral.new(config.to_hash)
|
|
24
|
+
container.create!
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
cmd = "lxc-awesome-ephemeral -d -o #{config[:base_container]} -n #{state[:container_id]}"
|
|
34
|
-
[:device, :ipaddress, :netmask, :gateway, :key].each do |opt|
|
|
35
|
-
unless config[opt].nil?
|
|
36
|
-
cmd << " --#{opt} #{config[opt]}"
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
cmd << " -z #{state[:overlay]}" if state[:overlay]
|
|
40
|
-
run_command(cmd)
|
|
41
|
-
end
|
|
26
|
+
state[:container_name] = container.name
|
|
42
27
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
cmd << " -z #{state[:overlay]}" if state[:overlay]
|
|
46
|
-
run_command(cmd)
|
|
47
|
-
end
|
|
28
|
+
lxc = ::Lxc.new(state[:container_name])
|
|
29
|
+
lxc.start
|
|
48
30
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
raise ActionFailed, "LXC DHCP lease file does not exist '#{config[:dhcp_lease_file]}'"
|
|
52
|
-
end
|
|
53
|
-
config[:dhcp_lease_file]
|
|
31
|
+
state[:hostname] = lxc.container_ip(10, true)
|
|
32
|
+
wait_for_sshd(state[:hostname])
|
|
54
33
|
end
|
|
55
34
|
|
|
56
|
-
def
|
|
57
|
-
if
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
30.times do
|
|
61
|
-
leases = ::File.readlines(dhcp_lease_file).map { |line| line.split(" ") }
|
|
62
|
-
leases.each do |lease|
|
|
63
|
-
return lease[2] if lease.include?(state[:container_id])
|
|
64
|
-
end
|
|
65
|
-
sleep 3
|
|
66
|
-
end
|
|
35
|
+
def destroy(state)
|
|
36
|
+
if state[:container_name]
|
|
37
|
+
lxc = ::Lxc.new(state[:container_name])
|
|
38
|
+
lxc.destroy
|
|
67
39
|
end
|
|
68
|
-
raise ActionFailed, "Could not determine IP address for LXC container '#{state[:container_id]}'"
|
|
69
40
|
end
|
|
41
|
+
|
|
70
42
|
end
|
|
71
43
|
|
|
72
44
|
class LXC < Lxc; end
|
metadata
CHANGED
|
@@ -1,64 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-lxc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
version: 0.0.1.beta2
|
|
4
|
+
version: 0.0.1
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Sean Porter
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
|
-
|
|
14
|
+
name: test-kitchen
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - '>='
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 1.0.0.
|
|
19
|
+
version: 1.0.0.beta.4
|
|
20
|
+
type: :runtime
|
|
22
21
|
prerelease: false
|
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
-
none: false
|
|
25
23
|
requirements:
|
|
26
|
-
- -
|
|
24
|
+
- - '>='
|
|
27
25
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: 1.0.0.
|
|
29
|
-
name: test-kitchen
|
|
26
|
+
version: 1.0.0.beta.4
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
|
31
|
-
|
|
28
|
+
name: elecksee
|
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
30
|
requirements:
|
|
35
|
-
- -
|
|
31
|
+
- - '>='
|
|
36
32
|
- !ruby/object:Gem::Version
|
|
37
|
-
version:
|
|
33
|
+
version: 1.0.14
|
|
34
|
+
type: :runtime
|
|
38
35
|
prerelease: false
|
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
-
none: false
|
|
41
37
|
requirements:
|
|
42
|
-
- -
|
|
38
|
+
- - '>='
|
|
43
39
|
- !ruby/object:Gem::Version
|
|
44
|
-
version:
|
|
45
|
-
name: lxc-awesome-ephemeral
|
|
40
|
+
version: 1.0.14
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
|
|
42
|
+
name: rake
|
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
44
|
requirements:
|
|
51
|
-
- -
|
|
45
|
+
- - '>='
|
|
52
46
|
- !ruby/object:Gem::Version
|
|
53
47
|
version: '0'
|
|
48
|
+
type: :development
|
|
54
49
|
prerelease: false
|
|
55
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
-
none: false
|
|
57
51
|
requirements:
|
|
58
|
-
- -
|
|
52
|
+
- - '>='
|
|
59
53
|
- !ruby/object:Gem::Version
|
|
60
54
|
version: '0'
|
|
61
|
-
name: rake
|
|
62
55
|
description: LXC driver for Test Kitchen
|
|
63
56
|
email:
|
|
64
57
|
- portertech@gmail.com
|
|
@@ -77,27 +70,27 @@ files:
|
|
|
77
70
|
homepage: https://github.com/portertech/kitchen-lxc
|
|
78
71
|
licenses:
|
|
79
72
|
- MIT
|
|
73
|
+
metadata: {}
|
|
80
74
|
post_install_message:
|
|
81
75
|
rdoc_options: []
|
|
82
76
|
require_paths:
|
|
83
77
|
- lib
|
|
84
78
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
|
-
none: false
|
|
86
79
|
requirements:
|
|
87
|
-
- -
|
|
80
|
+
- - '>='
|
|
88
81
|
- !ruby/object:Gem::Version
|
|
89
82
|
version: '0'
|
|
90
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
|
-
none: false
|
|
92
84
|
requirements:
|
|
93
|
-
- -
|
|
85
|
+
- - '>='
|
|
94
86
|
- !ruby/object:Gem::Version
|
|
95
|
-
version:
|
|
87
|
+
version: '0'
|
|
96
88
|
requirements: []
|
|
97
89
|
rubyforge_project:
|
|
98
|
-
rubygems_version:
|
|
90
|
+
rubygems_version: 2.0.6
|
|
99
91
|
signing_key:
|
|
100
|
-
specification_version:
|
|
92
|
+
specification_version: 4
|
|
101
93
|
summary: LXC driver for Test Kitchen
|
|
102
94
|
test_files:
|
|
103
95
|
- test/lxc_driver_tests.rb
|
|
96
|
+
has_rdoc: false
|