class Ec2::SaltCloud
Attributes
config[RW]
hosts_file[W]
Public Class Methods
new()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 17 def initialize end
Public Instance Methods
run()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 20 def run init_working_dir copy_providers copy_profiles copy_master_config copy_deploy_scripts init_aws render_global_profiles render_local_profile run_salt_cloud end
Private Instance Methods
api()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 42 def api @api ||= QueryApi.new(vpc_id: config[:vpc_id]) end
copy_deploy_scripts()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 76 def copy_deploy_scripts return if not File.directory? "/etc/salt/cloud.deploy.d" FileUtils.cp_r "/etc/salt/cloud.deploy.d", working_dir end
copy_master_config()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 72 def copy_master_config FileUtils.cp "/etc/salt/master", working_dir end
copy_profiles()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 64 def copy_profiles return if not File.directory? "/etc/salt/cloud.profiles.d" Dir["/etc/salt/cloud.profiles.d/*.conf"].each do |f| path = Pathname.new f FileUtils.cp path, "#{working_dir}/cloud.profiles.d/_#{path.basename}" end end
copy_providers()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 59 def copy_providers return if not File.directory? "/etc/salt/cloud.providers.d" FileUtils.cp_r "/etc/salt/cloud.providers.d", working_dir end
hosts_file()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 50 def hosts_file @hosts_file ||= "hosts" end
init_aws()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 34 def init_aws if not config[:use_iam] credentials = Aws::Credentials.new(config[:aws_key], config[:aws_secret]) Aws.config[:credentials] = credentials end Aws.config[:region] = config[:region] end
init_working_dir()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 54 def init_working_dir FileUtils.rm_r working_dir if File.directory? working_dir FileUtils.mkdir_p "#{working_dir}/cloud.profiles.d" end
render(path, prefix: nil)
click to toggle source
# File lib/ec2/salt_cloud.rb, line 92 def render(path, prefix: nil) extname = File.extname path name = File.basename(path, extname) outfile = "#{working_dir}/cloud.profiles.d/#{prefix}#{name}.conf" case extname when ".rb" profile_dsl = ProfileDsl.new(path, api: api) File.open(outfile, "w") { |f| f.write profile_dsl.render } when ".erb" erb = ErbProfile.new(path, api: api) File.open(outfile, "w") { |f| f.write erb.render } end end
render_global_profiles()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 81 def render_global_profiles Dir["/etc/salt/cloud.profiles.d/*.erb"].each do |f| render(f, prefix: "_") end end
render_local_profile()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 87 def render_local_profile local_profile = ["profiles.rb", "profiles.erb"].find { |f| File.readable? f } render(local_profile) if local_profile end
run_salt_cloud()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 106 def run_salt_cloud logger.debug "running salt cloud" command = %Q( salt-cloud -m #{hosts_file} -c #{working_dir} ) command << " -l debug" if logger.trace? system command end
working_dir()
click to toggle source
# File lib/ec2/salt_cloud.rb, line 46 def working_dir @working_dir ||= ".salt.tmp" end