class Mist::LXCTemplate
Public Class Methods
new(distro, release)
click to toggle source
# File lib/mist/lxc_template.rb, line 19 def initialize(distro, release) @distro = distro @release = release @template_name = "template-#{distro}-#{release}" @template = LXC::Container.new(@template_name) end
Public Instance Methods
clone(name)
click to toggle source
# File lib/mist/lxc_template.rb, line 48 def clone(name) container = @template.clone(name, flags: LXC::LXC_CLONE_SNAPSHOT, bdev_type: 'overlayfs') container.wait(:stopped, 10) return container rescue StandardError => ex Mist.logger.error "Failed to clone template #{@template_name}: #{ex}" raise end
create(config)
click to toggle source
# File lib/mist/lxc_template.rb, line 31 def create(config) Mist.logger.info "Creating #{@template_name}..." # Create our own user with a known key & strong random password username = config.username pubkey = config.ssh_public_key password = SecureRandom.urlsafe_base64(32) @template.create(@distro, nil, {}, 0, ['--release', @release, '--user', username, '--auth-key', pubkey, '--password', password]) rescue StandardError => ex Mist.logger.error "Failed to create template #{@template_name}: #{ex}" raise end
exists?()
click to toggle source
# File lib/mist/lxc_template.rb, line 27 def exists? @template.defined? end