Sha256: 511816ca55b90b07d3199d0180db825dccae5e9fde0361f87388fbab9ac78dbb

Contents?: true

Size: 1.85 KB

Versions: 3

Compression:

Stored size: 1.85 KB

Contents

#!/usr/bin/env ruby

require 'fileutils'
require 'erb'

@provision_templatedir = File.join(File.dirname(__FILE__), '..', 'template', 'provision')
@dest_dir = "config/provision"

def gem_path
  File.expand_path '../..', __FILE__
end

def project_name
  File.basename(Dir.pwd)
end

def template(src, dest = nil)
  dest ||= src
  template = ERB.new File.read(File.join(@provision_templatedir, "#{src}.erb")), nil, '-'
  File.write File.join(@dest_dir, dest), template.result(binding)
end

def copy(src, dest = nil)
  dest ||= src
  FileUtils.cp File.join(@provision_templatedir, src), File.join(@dest_dir, dest)
end

def environments
  %w(production dev)
end

def hostname(env)
  "#{project_name.gsub('_', '-')}-#{env}"
end

def create_vault_pass
  File.write File.join(@dest_dir, ".vault_pass"), SecureRandom.base64
end

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

if ARGV[0] == "init"
  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"

  copy ".gitignore"
  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

  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:

    cd config/provision && ansible-playbook dev.yml

"""
else
  puts "usage: subspace init"
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
subspace-0.1.3 exe/subspace
subspace-0.1.2 exe/subspace
subspace-0.1.1 exe/subspace