Class: Hyrb::Tasks::Ansible::CreatePlaybook

Inherits:
Hyrb::Task
  • Object
show all
Defined in:
lib/hyrb/tasks/ansible.rb

Instance Attribute Summary

Attributes inherited from Hyrb::Task

#env, #pipeline

Instance Method Summary collapse

Methods inherited from Hyrb::Task

depends, #initialize, prompt, prompts, #run_before

Constructor Details

This class inherits a constructor from Hyrb::Task

Instance Method Details

#run(env) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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