class Gonzo::Providers::Docker
Attributes
config[R]
global[R]
providerdir[R]
Public Class Methods
new(config, global)
click to toggle source
# File lib/gonzo/providers/docker.rb, line 8 def initialize(config, global) @global = global @providerdir = "#{global['statedir']}/provider/docker" Gonzo.required_command 'docker' if config.keys.include?('image') @config = { 'default' => config } else @config = config end end
Public Instance Methods
provision(container, container_config)
click to toggle source
# File lib/gonzo/providers/docker.rb, line 21 def provision(container, container_config) FileUtils.mkdir_p(providerdir) unless File.directory?(providerdir) local_script = "#{providerdir}/#{container}.sh" relative_script = "#{relative_providerdir}/#{container}.sh" if container_config['commands'] command = ['docker', 'run', "-v #{Dir.pwd}:/gonzo"] command << "-u #{container_config['user']}" if container_config['user'] File.open(local_script, 'w') do |f| f << shellscript(container_config) end FileUtils.chmod('+x', local_script) command << "#{container_config['image']} /bin/bash /gonzo/#{relative_script}" system command.join(' ') else fail "No provisioner commands given for #{container}!" end end
run()
click to toggle source
# File lib/gonzo/providers/docker.rb, line 39 def run exit_codes = [] config.each do |container, container_config| exit_codes << provision(container, container_config) end return false if exit_codes.include?(false) true end