lib/dev-lxc/server.rb in dev-lxc-1.2.2 vs lib/dev-lxc/server.rb in dev-lxc-1.3.0
- old
+ new
@@ -27,10 +27,12 @@
@mounts = cluster_config[@server_type]["mounts"]
@platform_image_name = cluster_config[@server_type]["platform_image"]
@packages = cluster_config[@server_type]["packages"]
case @server_type
+ when 'adhoc'
+ @shared_image_name = ''
when 'analytics'
@shared_image_name = "s#{@platform_image_name[1..-1]}"
@shared_image_name += "-analytics-#{Regexp.last_match[1].gsub(".", "-")}" if @packages["analytics"].to_s.match(/[_-]((\d+\.?){3,})/)
when 'chef-server'
if File.basename(@packages["server"]).match(/^(\w+-\w+.*)[_-]((?:\d+\.?){3,})/)
@@ -159,18 +161,26 @@
unique_image.clone(@server.name, {:flags => LXC::LXC_CLONE_SNAPSHOT|LXC::LXC_CLONE_KEEPMACADDR})
@server = DevLXC::Container.new(@server.name, @lxc_config_path)
return
else
puts "Creating container '#{@server.name}'"
- unless @server.name == @chef_server_bootstrap_backend || DevLXC::Container.new(@chef_server_bootstrap_backend, @lxc_config_path).defined?
- puts "ERROR: The bootstrap backend server '#{@chef_server_bootstrap_backend}' must be created first."
- exit 1
+ if @server_type == 'adhoc'
+ platform_image = DevLXC.create_platform_image(@platform_image_name, @lxc_config_path)
+ puts "Cloning platform image '#{platform_image.name}' into container '#{@server.name}'"
+ platform_image.clone(@server.name, {:flags => LXC::LXC_CLONE_SNAPSHOT})
+ else
+ unless @server.name == @chef_server_bootstrap_backend || DevLXC::Container.new(@chef_server_bootstrap_backend, @lxc_config_path).defined?
+ puts "ERROR: The bootstrap backend server '#{@chef_server_bootstrap_backend}' must be created first."
+ exit 1
+ end
+ shared_image = create_shared_image
+ puts "Cloning shared image '#{shared_image.name}' into container '#{@server.name}'"
+ shared_image.clone(@server.name, {:flags => LXC::LXC_CLONE_SNAPSHOT})
end
- shared_image = create_shared_image
- puts "Cloning shared image '#{shared_image.name}' into container '#{@server.name}'"
- shared_image.clone(@server.name, {:flags => LXC::LXC_CLONE_SNAPSHOT})
@server = DevLXC::Container.new(@server.name, @lxc_config_path)
+ puts "Deleting SSH Server Host Keys"
+ FileUtils.rm_f(Dir.glob("#{@server.config_item('lxc.rootfs')}/etc/ssh/ssh_host*_key*"))
puts "Adding lxc.hook.post-stop hook"
@server.set_config_item("lxc.hook.post-stop", "/usr/local/share/lxc/hooks/post-stop-dhcp-release")
@server.save_config
hwaddr = @server.config_item("lxc.network.0.hwaddr")
if hwaddr.empty?
@@ -223,9 +233,11 @@
end
platform_image = DevLXC.create_platform_image(@platform_image_name, @lxc_config_path)
puts "Cloning platform image '#{platform_image.name}' into shared image '#{shared_image.name}'"
platform_image.clone(shared_image.name, {:flags => LXC::LXC_CLONE_SNAPSHOT})
shared_image = DevLXC::Container.new(shared_image.name, @lxc_config_path)
+ puts "Deleting SSH Server Host Keys"
+ FileUtils.rm_f(Dir.glob("#{shared_image.config_item('lxc.rootfs')}/etc/ssh/ssh_host*_key*"))
# Disable certain sysctl.d files in Ubuntu 10.04, they cause `start procps` to fail
# Enterprise Chef server's postgresql recipe expects to be able to `start procps`
if platform_image.name == "p-ubuntu-1004"
if File.exist?("#{shared_image.config_item('lxc.rootfs')}/etc/sysctl.d/10-console-messages.conf")