dev-lxc 2.6.1 → 2.6.2
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 +4 -4
- data/.gitignore +17 -17
- data/CHANGELOG.md +317 -313
- data/Gemfile +4 -4
- data/LICENSE +201 -201
- data/README.md +287 -279
- data/Rakefile +1 -1
- data/bin/dev-lxc +9 -9
- data/dev-lxc.gemspec +26 -26
- data/docs/adhoc_clusters.md +22 -22
- data/docs/base_containers.md +44 -44
- data/docs/configuration.md +203 -203
- data/docs/dev-lxc_version_2.md +10 -10
- data/docs/manage_multiple_clusters.md +30 -30
- data/docs/usage.md +187 -187
- data/lib/dev-lxc/cli.rb +434 -434
- data/lib/dev-lxc/cluster.rb +1211 -1211
- data/lib/dev-lxc/container.rb +123 -123
- data/lib/dev-lxc/server.rb +197 -197
- data/lib/dev-lxc/version.rb +3 -3
- data/lib/dev-lxc.rb +118 -118
- metadata +2 -2
data/lib/dev-lxc.rb
CHANGED
@@ -1,118 +1,118 @@
|
|
1
|
-
require "fileutils"
|
2
|
-
require "digest/sha1"
|
3
|
-
require "lxc"
|
4
|
-
require "dev-lxc/container"
|
5
|
-
require "dev-lxc/server"
|
6
|
-
require "dev-lxc/cluster"
|
7
|
-
|
8
|
-
module DevLXC
|
9
|
-
def self.create_base_container(base_container_name, base_container_options)
|
10
|
-
base_container = DevLXC::Container.new(base_container_name)
|
11
|
-
if base_container.defined?
|
12
|
-
puts "Base container '#{base_container.name}' already exists"
|
13
|
-
return base_container
|
14
|
-
end
|
15
|
-
puts "Creating base container '#{base_container.name}'"
|
16
|
-
template = "download"
|
17
|
-
case base_container.name
|
18
|
-
when "b-ubuntu-1204"
|
19
|
-
options = ["-d", "ubuntu", "-r", "precise", "-a", "amd64"]
|
20
|
-
when "b-ubuntu-1404"
|
21
|
-
options = ["-d", "ubuntu", "-r", "trusty", "-a", "amd64"]
|
22
|
-
when "b-ubuntu-1604"
|
23
|
-
options = ["-d", "ubuntu", "-r", "xenial", "-a", "amd64"]
|
24
|
-
when "b-centos-5"
|
25
|
-
template = "centos"
|
26
|
-
options = ["-R", "5"]
|
27
|
-
when "b-centos-6"
|
28
|
-
options = ["-d", "centos", "-r", "6", "-a", "amd64"]
|
29
|
-
when "b-centos-7"
|
30
|
-
options = ["-d", "centos", "-r", "7", "-a", "amd64"]
|
31
|
-
end
|
32
|
-
options.concat(base_container_options.split) unless base_container_options.nil?
|
33
|
-
base_container.create(template, "btrfs", {}, 0, options)
|
34
|
-
|
35
|
-
# if base container is centos then `/etc/hosts` file needs to be modified so `hostname -f`
|
36
|
-
# provides the FQDN instead of `localhost`
|
37
|
-
if base_container.name.start_with?('b-centos-')
|
38
|
-
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/hosts", "127.0.0.1 localhost\n127.0.1.1 #{base_container.name}\n")
|
39
|
-
end
|
40
|
-
|
41
|
-
# Centos 7 needs setpcap capabilities
|
42
|
-
# ref: https://bugzilla.redhat.com/show_bug.cgi?id=1176816
|
43
|
-
# ref: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1339781
|
44
|
-
# ref: http://vfamilyserver.org/blog/2015/05/centos-7-lxc-container-slow-boot/
|
45
|
-
if base_container.name == "b-centos-7"
|
46
|
-
DevLXC.search_file_replace(base_container.config_file_name, /centos.common.conf/, 'fedora.common.conf')
|
47
|
-
base_container.clear_config
|
48
|
-
base_container.load_config
|
49
|
-
end
|
50
|
-
|
51
|
-
unless base_container.config_item("lxc.mount.auto").nil?
|
52
|
-
base_container.set_config_item("lxc.mount.auto", "proc:rw sys:rw")
|
53
|
-
end
|
54
|
-
if base_container.config_item("lxc.network.0.hwaddr").nil?
|
55
|
-
hwaddr = '00:16:3e:' + Digest::SHA1.hexdigest(Time.now.to_s).slice(0..5).unpack('a2a2a2').join(':')
|
56
|
-
puts "Setting '#{base_container.name}' base container's lxc.network.hwaddr to #{hwaddr}"
|
57
|
-
base_container.set_config_item("lxc.network.hwaddr", hwaddr)
|
58
|
-
end
|
59
|
-
base_container.save_config
|
60
|
-
base_container.start
|
61
|
-
puts "Installing packages in base container '#{base_container.name}'"
|
62
|
-
case base_container.name
|
63
|
-
when "b-ubuntu-1204", "b-ubuntu-1404"
|
64
|
-
base_container.run_command("apt-get update")
|
65
|
-
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs23-nox tree openssh-server")
|
66
|
-
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
|
67
|
-
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
|
68
|
-
when "b-ubuntu-1604"
|
69
|
-
base_container.run_command("apt-get update")
|
70
|
-
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs24-nox tree openssh-server")
|
71
|
-
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
|
72
|
-
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
|
73
|
-
when "b-centos-5"
|
74
|
-
# downgrade openssl temporarily to overcome an install bug
|
75
|
-
# reference: http://www.hack.net.br/blog/2014/02/12/openssl-conflicts-with-file-from-package-openssl/
|
76
|
-
base_container.run_command("yum downgrade -y openssl")
|
77
|
-
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
78
|
-
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
|
79
|
-
FileUtils.chmod(0750, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
|
80
|
-
append_line_to_file("#{base_container.config_item('lxc.rootfs')}/etc/sudoers", "\n#includedir /etc/sudoers.d\n")
|
81
|
-
when "b-centos-6"
|
82
|
-
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
83
|
-
when "b-centos-7"
|
84
|
-
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
85
|
-
end
|
86
|
-
base_container.run_command("useradd --create-home --shell /bin/bash --password $6$q3FDMpMZ$zfahCxEWHbzuEV98QPzhGZ7fLtGcLNZrbKK7OAYGXmJXZc07WbcxVnDwrMyX/cL6vSp4/IjlrVUZFBp7Orhyu1 dev-lxc")
|
87
|
-
|
88
|
-
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
|
89
|
-
FileUtils.chmod(0700, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
|
90
|
-
FileUtils.touch("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
|
91
|
-
FileUtils.chmod(0600, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
|
92
|
-
base_container.run_command("chown -R dev-lxc:dev-lxc /home/dev-lxc/.ssh")
|
93
|
-
|
94
|
-
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc", "dev-lxc ALL=NOPASSWD:ALL\n")
|
95
|
-
FileUtils.chmod(0440, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc")
|
96
|
-
base_container.shutdown
|
97
|
-
return base_container
|
98
|
-
end
|
99
|
-
|
100
|
-
def self.reload_dnsmasq
|
101
|
-
system("pkill -HUP dnsmasq")
|
102
|
-
end
|
103
|
-
|
104
|
-
def self.search_file_delete_line(file_name, regex)
|
105
|
-
IO.write(file_name, IO.readlines(file_name).delete_if {|line| line.match(Regexp.new(regex))}.join)
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.append_line_to_file(file_name, line)
|
109
|
-
content = IO.readlines(file_name)
|
110
|
-
content[-1] = content[-1].chomp + "\n" unless content.empty?
|
111
|
-
content << line
|
112
|
-
IO.write(file_name, content.join)
|
113
|
-
end
|
114
|
-
|
115
|
-
def self.search_file_replace(file_name, regex, replace)
|
116
|
-
IO.write(file_name, IO.readlines(file_name).map {|line| line.gsub(Regexp.new(regex), replace)}.join)
|
117
|
-
end
|
118
|
-
end
|
1
|
+
require "fileutils"
|
2
|
+
require "digest/sha1"
|
3
|
+
require "lxc"
|
4
|
+
require "dev-lxc/container"
|
5
|
+
require "dev-lxc/server"
|
6
|
+
require "dev-lxc/cluster"
|
7
|
+
|
8
|
+
module DevLXC
|
9
|
+
def self.create_base_container(base_container_name, base_container_options)
|
10
|
+
base_container = DevLXC::Container.new(base_container_name)
|
11
|
+
if base_container.defined?
|
12
|
+
puts "Base container '#{base_container.name}' already exists"
|
13
|
+
return base_container
|
14
|
+
end
|
15
|
+
puts "Creating base container '#{base_container.name}'"
|
16
|
+
template = "download"
|
17
|
+
case base_container.name
|
18
|
+
when "b-ubuntu-1204"
|
19
|
+
options = ["-d", "ubuntu", "-r", "precise", "-a", "amd64"]
|
20
|
+
when "b-ubuntu-1404"
|
21
|
+
options = ["-d", "ubuntu", "-r", "trusty", "-a", "amd64"]
|
22
|
+
when "b-ubuntu-1604"
|
23
|
+
options = ["-d", "ubuntu", "-r", "xenial", "-a", "amd64"]
|
24
|
+
when "b-centos-5"
|
25
|
+
template = "centos"
|
26
|
+
options = ["-R", "5"]
|
27
|
+
when "b-centos-6"
|
28
|
+
options = ["-d", "centos", "-r", "6", "-a", "amd64"]
|
29
|
+
when "b-centos-7"
|
30
|
+
options = ["-d", "centos", "-r", "7", "-a", "amd64"]
|
31
|
+
end
|
32
|
+
options.concat(base_container_options.split) unless base_container_options.nil?
|
33
|
+
base_container.create(template, "btrfs", {}, 0, options)
|
34
|
+
|
35
|
+
# if base container is centos then `/etc/hosts` file needs to be modified so `hostname -f`
|
36
|
+
# provides the FQDN instead of `localhost`
|
37
|
+
if base_container.name.start_with?('b-centos-')
|
38
|
+
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/hosts", "127.0.0.1 localhost\n127.0.1.1 #{base_container.name}\n")
|
39
|
+
end
|
40
|
+
|
41
|
+
# Centos 7 needs setpcap capabilities
|
42
|
+
# ref: https://bugzilla.redhat.com/show_bug.cgi?id=1176816
|
43
|
+
# ref: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1339781
|
44
|
+
# ref: http://vfamilyserver.org/blog/2015/05/centos-7-lxc-container-slow-boot/
|
45
|
+
if base_container.name == "b-centos-7"
|
46
|
+
DevLXC.search_file_replace(base_container.config_file_name, /centos.common.conf/, 'fedora.common.conf')
|
47
|
+
base_container.clear_config
|
48
|
+
base_container.load_config
|
49
|
+
end
|
50
|
+
|
51
|
+
unless base_container.config_item("lxc.mount.auto").nil?
|
52
|
+
base_container.set_config_item("lxc.mount.auto", "proc:rw sys:rw")
|
53
|
+
end
|
54
|
+
if base_container.config_item("lxc.network.0.hwaddr").nil?
|
55
|
+
hwaddr = '00:16:3e:' + Digest::SHA1.hexdigest(Time.now.to_s).slice(0..5).unpack('a2a2a2').join(':')
|
56
|
+
puts "Setting '#{base_container.name}' base container's lxc.network.hwaddr to #{hwaddr}"
|
57
|
+
base_container.set_config_item("lxc.network.hwaddr", hwaddr)
|
58
|
+
end
|
59
|
+
base_container.save_config
|
60
|
+
base_container.start
|
61
|
+
puts "Installing packages in base container '#{base_container.name}'"
|
62
|
+
case base_container.name
|
63
|
+
when "b-ubuntu-1204", "b-ubuntu-1404"
|
64
|
+
base_container.run_command("apt-get update")
|
65
|
+
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs23-nox tree openssh-server")
|
66
|
+
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
|
67
|
+
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
|
68
|
+
when "b-ubuntu-1604"
|
69
|
+
base_container.run_command("apt-get update")
|
70
|
+
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs24-nox tree openssh-server")
|
71
|
+
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
|
72
|
+
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
|
73
|
+
when "b-centos-5"
|
74
|
+
# downgrade openssl temporarily to overcome an install bug
|
75
|
+
# reference: http://www.hack.net.br/blog/2014/02/12/openssl-conflicts-with-file-from-package-openssl/
|
76
|
+
base_container.run_command("yum downgrade -y openssl")
|
77
|
+
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
78
|
+
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
|
79
|
+
FileUtils.chmod(0750, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
|
80
|
+
append_line_to_file("#{base_container.config_item('lxc.rootfs')}/etc/sudoers", "\n#includedir /etc/sudoers.d\n")
|
81
|
+
when "b-centos-6"
|
82
|
+
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
83
|
+
when "b-centos-7"
|
84
|
+
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
|
85
|
+
end
|
86
|
+
base_container.run_command("useradd --create-home --shell /bin/bash --password $6$q3FDMpMZ$zfahCxEWHbzuEV98QPzhGZ7fLtGcLNZrbKK7OAYGXmJXZc07WbcxVnDwrMyX/cL6vSp4/IjlrVUZFBp7Orhyu1 dev-lxc")
|
87
|
+
|
88
|
+
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
|
89
|
+
FileUtils.chmod(0700, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
|
90
|
+
FileUtils.touch("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
|
91
|
+
FileUtils.chmod(0600, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
|
92
|
+
base_container.run_command("chown -R dev-lxc:dev-lxc /home/dev-lxc/.ssh")
|
93
|
+
|
94
|
+
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc", "dev-lxc ALL=NOPASSWD:ALL\n")
|
95
|
+
FileUtils.chmod(0440, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc")
|
96
|
+
base_container.shutdown
|
97
|
+
return base_container
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.reload_dnsmasq
|
101
|
+
system("pkill -HUP dnsmasq")
|
102
|
+
end
|
103
|
+
|
104
|
+
def self.search_file_delete_line(file_name, regex)
|
105
|
+
IO.write(file_name, IO.readlines(file_name).delete_if {|line| line.match(Regexp.new(regex))}.join)
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.append_line_to_file(file_name, line)
|
109
|
+
content = IO.readlines(file_name)
|
110
|
+
content[-1] = content[-1].chomp + "\n" unless content.empty?
|
111
|
+
content << line
|
112
|
+
IO.write(file_name, content.join)
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.search_file_replace(file_name, regex, replace)
|
116
|
+
IO.write(file_name, IO.readlines(file_name).map {|line| line.gsub(Regexp.new(regex), replace)}.join)
|
117
|
+
end
|
118
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dev-lxc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremiah Snapp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|