Desenvolver rapidamente, criando toda a estrutura PaaS virtualizada localmente, depois de maneira rápida homologar com o cliente e subir o ambiente produção na AWS facilmente.
13. My Application Cookbook Recipes
# FILE: deploy.rb
deploy_revision node['webapp']['home'] do
repo node["webapp"]["repo"]
revision node["webapp"]["revision"]
# Disabling rails links and folders
migrate false
action :deploy # or :rollback
before_restart do
current_release = release_path
end
end
["database.php","site_config.php"].each do |php|
template "#{current_release}/app/Config/#{php}" do
source "#{php}.erb"
mode 00644
end
restart_command do
service "apache2" do
action :restart
end
end
# FILE: database.rb
# externalize conection info in a ruby hash
mysql_connection_info = {
:host => "localhost",
:username => 'root',
:password => node['mysql']['server_root_password']
}
# create a mysql database named DB_NAME
mysql_database '#{node['webapp']['database']['database']}' do
connection mysql_connection_info
action [:create]
end
#or import from a dump file
mysql_database "node['webapp']['database']['database']" do
connection mysql_connection_info
sql "source #{node['webapp']['current_release']}#{node['webapp']['databasedumpfile']};"
end
# query a database from a sql script on disk
mysql_database "#{node['webapp']['database']['database']}" do
connection mysql_connection_info
sql { ::File.open("#{node['webapp']['current_release']}#{node['webapp']['dbupdatefile']}").read }
action :query
end
19. Colher os frutos do trabalho
Criar o ambiente dev/homolog local
$ vagrant up
Atualizar/reconfigurar o seu ambiente
$ vagrant provision
Acessar o sua VM virtual box
$ vagrant ssh
Criar login no Vagrantcloud
Publicar na internet seu ambiente local
$ vagrant share
Criar o ambiente Prod/Homolog na AWS
$ vagrant up --provider=aws
Atualizar/reconfigurar o seu ambiente
$ vagrant provision
Acessar o sua instancia AWS
$ vagrant ssh
Publicar na internet seu ambiente local
$ vagrant ssh-config (pegar o IP)
Associar Elastic IP, Configurar DNS route53