9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/dev-lxc.rb', line 9
def self.create_base_container(base_container_name, base_container_options)
base_container = DevLXC::Container.new(base_container_name)
if base_container.defined?
puts "Using existing base container '#{base_container.name}'"
return base_container
end
puts "Creating base container '#{base_container.name}'"
template = "download"
case base_container.name
when "b-ubuntu-1204"
options = ["-d", "ubuntu", "-r", "precise", "-a", "amd64"]
when "b-ubuntu-1404"
options = ["-d", "ubuntu", "-r", "trusty", "-a", "amd64"]
when "b-ubuntu-1604"
options = ["-d", "ubuntu", "-r", "xenial", "-a", "amd64"]
when "b-centos-5"
template = "centos"
options = ["-R", "5"]
when "b-centos-6"
options = ["-d", "centos", "-r", "6", "-a", "amd64"]
when "b-centos-7"
options = ["-d", "centos", "-r", "7", "-a", "amd64"]
end
options.concat(base_container_options.split) unless base_container_options.nil?
base_container.create(template, "btrfs", {}, 0, options)
if base_container.name.start_with?('b-centos-')
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/hosts", "127.0.0.1 localhost\n127.0.1.1 #{base_container.name}\n")
end
if base_container.name == "b-centos-7"
DevLXC.search_file_replace(base_container.config_file_name, /centos.common.conf/, 'fedora.common.conf')
base_container.clear_config
base_container.load_config
end
unless base_container.config_item("lxc.mount.auto").nil?
base_container.set_config_item("lxc.mount.auto", "proc:rw sys:rw")
end
if base_container.config_item("lxc.network.0.hwaddr").nil?
hwaddr = '00:16:3e:' + Digest::SHA1.hexdigest(Time.now.to_s).slice(0..5).unpack('a2a2a2').join(':')
puts "Setting '#{base_container.name}' base container's lxc.network.hwaddr to #{hwaddr}"
base_container.set_config_item("lxc.network.hwaddr", hwaddr)
end
base_container.save_config
base_container.start
puts "Installing packages in base container '#{base_container.name}'"
case base_container.name
when "b-ubuntu-1204", "b-ubuntu-1404"
base_container.run_command("apt-get update")
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs23-nox tree openssh-server")
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
when "b-ubuntu-1604"
base_container.run_command("apt-get update")
base_container.run_command("apt-get install -y standard^ server^ vim-nox emacs24-nox tree openssh-server")
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/rc.local", "#!/usr/bin/env bash\n\n/usr/sbin/dpkg-reconfigure openssh-server\n")
FileUtils.chmod(0755, "#{base_container.config_item('lxc.rootfs')}/etc/rc.local")
when "b-centos-5"
base_container.run_command("yum downgrade -y openssl")
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
FileUtils.chmod(0750, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d")
append_line_to_file("#{base_container.config_item('lxc.rootfs')}/etc/sudoers", "\n#includedir /etc/sudoers.d\n")
when "b-centos-6"
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
when "b-centos-7"
base_container.run_command("yum install -y @base @core vim-enhanced emacs-nox tree openssh-server")
end
base_container.run_command("useradd --create-home --shell /bin/bash --password $6$q3FDMpMZ$zfahCxEWHbzuEV98QPzhGZ7fLtGcLNZrbKK7OAYGXmJXZc07WbcxVnDwrMyX/cL6vSp4/IjlrVUZFBp7Orhyu1 dev-lxc")
FileUtils.mkdir_p("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
FileUtils.chmod(0700, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh")
FileUtils.touch("#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
FileUtils.chmod(0600, "#{base_container.config_item('lxc.rootfs')}/home/dev-lxc/.ssh/authorized_keys")
base_container.run_command("chown -R dev-lxc:dev-lxc /home/dev-lxc/.ssh")
IO.write("#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc", "dev-lxc ALL=NOPASSWD:ALL\n")
FileUtils.chmod(0440, "#{base_container.config_item('lxc.rootfs')}/etc/sudoers.d/dev-lxc")
base_container.stop
return base_container
end
|