class Subspace::Commands::Init
Public Class Methods
new(args, options)
click to toggle source
# File lib/subspace/commands/init.rb, line 5 def initialize(args, options) if args.first == "vars" init_vars else run end end
Public Instance Methods
init_vars()
click to toggle source
# File lib/subspace/commands/init.rb, line 63 def init_vars FileUtils.mkdir_p File.join dest_dir, "templates" copy "templates/application.yml.template" end
run()
click to toggle source
# File lib/subspace/commands/init.rb, line 13 def run if File.exists? dest_dir answer = ask "Subspace appears to be initialized. Reply 'yes' to continue anyway: [no] " abort unless answer.chomp == "yes" end FileUtils.mkdir_p File.join dest_dir, "group_vars" FileUtils.mkdir_p File.join dest_dir, "host_vars" FileUtils.mkdir_p File.join dest_dir, "vars" FileUtils.mkdir_p File.join dest_dir, "roles" copy ".gitignore" #template "../provision.rb" template "ansible.cfg" template "hosts" template "group_vars/all" create_vault_pass environments.each do |env| @env = env @hostname = hostname(env) template "group_vars/template", "group_vars/#{env}" template "host_vars/template", "host_vars/#{env}" create_vars_file_for_env env template "playbook.yml", "#{env}.yml" end create_vars_file_for_env "development" init_vars puts """ 1. Create a server. 2. Set your server's location: vim config/provision/host_vars/production vim config/provision/host_vars/dev 3. Set up your authorized_keys: vim config/provision/authorized_keys 4. Then provision your server: subspace provision dev subspace provision production """ end
Private Instance Methods
create_vars_file_for_env(env)
click to toggle source
# File lib/subspace/commands/init.rb, line 90 def create_vars_file_for_env(env) template "vars/template", "vars/#{env}.yml" Dir.chdir dest_dir do `ansible-vault encrypt vars/#{env}.yml` end end
create_vault_pass()
click to toggle source
# File lib/subspace/commands/init.rb, line 82 def create_vault_pass if File.exist? File.join(dest_dir, ".vault_pass") say ".vault_pass already exists. Skipping..." else File.write File.join(dest_dir, ".vault_pass"), SecureRandom.base64 end end
environments()
click to toggle source
# File lib/subspace/commands/init.rb, line 74 def environments %w(production dev) end
hostname(env)
click to toggle source
# File lib/subspace/commands/init.rb, line 78 def hostname(env) "#{project_name.gsub('_', '-')}-#{env}" end
project_name()
click to toggle source
# File lib/subspace/commands/init.rb, line 70 def project_name File.basename(Dir.pwd) end