Permite gestionar varios hosts a través de SSH combinando chef [sistema de gestión de configuración que automatiza el despliegue y la administración de infraestructura] y rake [herramienta para la automatización de tareas basada en Ruby]. Es una herramienta útil para automatizar tareas relacionadas con la configuración y mantenimiento de servidores.
$ chake init
$ chake web:restart
$ chake exec "uptime" --roles web
$ chake task_name --hosts web1
$ chake task_name --roles db
$ chake deploy:app --dry-run
Un ejemplo de hosts.yml podría ser:
hosts:
web1:
address: web1.example.com
roles: [web, app]
db1:
address: db1.example.com
roles: [db]
Un ejemplo de Rakefile para agregar tareas específicas. Por ejemplo, una tarea para reiniciar un servicio web:
namespace :web do
desc "Reinicia el servidor web"
task :restart do
on roles(:web) do |host|
run "sudo systemctl restart nginx"
end
end
end
Ejemplo usando variables:
namespace :deploy do
desc "Despliega la aplicación"
task :app, [:branch] do |t, args|
branch = args[:branch] || "main"
on roles(:app) do |host|
run "git pull origin #{branch}"
run "bundle install"
run "rails db:migrate"
end
end
end
$ chake deploy:app[feature-branch]