class SaltedRails::HelperBase

Attributes

config[RW]

Public Class Methods

new(config) click to toggle source
# File lib/salted-rails/helper_base.rb, line 13
def initialize(config)
  @config = config
  @config.logger.info "SaltedRails: Helper created with config.project_root = #{@config.project_root}"
end

Private Instance Methods

pillarize_application_configuration() click to toggle source

def create_empty_custom_files

@config.logger.info 'SaltedRails: Checking stubbed custom files exist' 

# Create custom files
[ 'pillar/vagrant', 'pillar/capistrano', 'salt/vagrant', 'salt/capistrano'].each do |custom|
  file = @config.project_root + 'config/' + custom + '.sls'
  dir = File.dirname(file)
  unless File.directory? dir
    FileUtils.mkdir_p dir
  end
  unless File.exists? file
    @config.logger.info "SaltedRails: Creating empty #{file}"
    File.open(file, 'w') do |f_out|
      f_out.puts '# Custom data'
    end
  end
end

end

# File lib/salted-rails/helper_base.rb, line 41
def pillarize_application_configuration
  @config.logger.info 'SaltedRails: Creating pillar application data' 
  @config.normalize

  # Destination
  salt_dir = @config.project_root + 'tmp/salt/'
  FileUtils.rm_rf salt_dir if File.directory? salt_dir
  FileUtils.mkdir_p salt_dir unless File.directory? salt_dir
  pillar_dir = @config.project_root + 'tmp/pillar/'
  FileUtils.rm_rf pillar_dir if File.directory? pillar_dir
  FileUtils.mkdir_p pillar_dir unless File.directory? pillar_dir
  pillar_app_file = pillar_dir + 'railsapp.sls'
  @config.files.each do |f|
    basename = File.basename(f)
    dest = salt_dir + "files/" + basename
    dir = File.dirname(dest)
    unless File.directory? dir
      FileUtils.mkdir_p dir
    end
    FileUtils.cp(@config.project_root + f, dest)
  end
  dest = salt_dir + 'packages.txt'
  if @config.packages
    src = @config.packages
    src = @config.project_root + src unless src =~ /^\//
    dir = File.dirname(dest)
    unless File.directory? dir
      FileUtils.mkdir_p dir
    end
    if !File.exist?(dest) or (File.mtime(src) > File.mtime(dest))
      @config.logger.info "SaltedRails: Copying #{src} to #{dest}"
      FileUtils.cp(src, dest)
    end
  else
    FileUtils.rm_f dest
  end
  @config.copy_from_home.each do |f|
    dest = salt_dir + "home/" + f
    dir = File.dirname(dest)
    unless File.directory? dir
      FileUtils.mkdir_p dir
    end
    if !File.exist?(dest) or (File.mtime(ENV['HOME'] + '/' + f) > File.mtime(dest))
      @config.logger.info "SaltedRails: Copying #{f} to #{dest}"
      FileUtils.cp_r(ENV['HOME'] + '/' + f, dest)
    end
  end
  %w{ authorized_keys known_hosts }.each do |f|
    file = salt_dir + "home/.ssh/" + f
    FileUtils.mv(file, file + '.from_home') if File.exist? file
  end
  File.open(pillar_app_file, 'w') do |f_out|
    if_command = 'if'
    @config.machines.each do |machine_config|
      f_out.puts "{% #{if_command} (grains['fqdn'] == '#{machine_config.hostname}') or (grains['fqdn'] == '#{machine_config.machine}') %}"
      if_command = 'elif'
      f_out.puts machine_config.to_yaml
    end
    f_out.puts "{% else %}" unless @config.machines.empty?
    f_out.puts @config.to_yaml
    f_out.puts "{% endif %}" unless @config.machines.empty?
  end
end