class Hyrb::Tasks::Ansible::CreatePlaybook

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/ansible.rb, line 47
def run(env)
  host = Models::AnsibleHost.new(env.project, env.environment)
  host.save!
  say "Saved inventory file to #{host.filepath}", :green

  site_playbook = Models::AnsibleSite.new(env.project, env.environment)
  site_playbook.data.merge!({
    project_name: env.project.name,
    host: env.environment.host,
    deploy_user: env.environment.deploy_user,
    base_path: env.environment.base_path,
    domain: env.environment.domain,
    relative_web_root: env.environment.relative_web_root,
  })

  site_playbook.hosts = env.environment.label

  if ! site_playbook.mysql_host && yes?("Does the project use a SQL database?")
    invoke Environment::Database

    site_playbook.data.merge!({
      mysql_host: env.environment.database_host,
      mysql_db: env.environment.database_name,
      mysql_user: env.environment.database_user,
      mysql_password: env.environment.database_password,
    })

    # TODO: add mysql role to playbook

    site_playbook.vars_prompt = [{ 
      "name" => "mysql_root_user", 
      "prompt" => "MySQL Root User", 
      "private" => false 
    },{ 
      "name" => "mysql_root_password", 
      "prompt" => "MySQL Root Password" 
    }]
  end

  site_playbook.save!
  
  say "Saved site playbook to #{site_playbook.filepath}", :green
  say "Run it with", :green
  say "\tcd #{env.project.ansible_path}", :green
  say "\tansible-playbook -i $(which yaminv) #{env.environment.label}.yml", :green
end