use ferramentas do Amazon EC2 no Capistrano para fazer com que os servidores enviem o código

use ferramentas do Amazon EC2 no Capistrano para fazer com que os servidores enviem o código

Estou tentando usar ferramentas EC2 para obter todas as máquinas com uma tag específica em algum tipo de array no arquivo /config/deploy/prod.rb no Capistrano. Algo assim:

No arquivo prod.rb:

//untested command
workers-array[]=$(ec2-describe-instances -F vpc-id=1234 -F tag:Env=prod -F     tag:SystemType=worker)
 for(i=0;i<workers-array.len;i++){
     role :worker-A, workers-array[i]
   }

Não tenho certeza de como podemos fazer isso no capistrano, também sou novo em Ruby. Pessoal, qualquer ajuda sobre isso seria muito apreciada.

Responder1

Recentemente, encontrei o mesmo problema ou tive pensamentos semelhantes. Me deparei com essa pergunta enquanto trabalhava com outra coisa.

Então, eu queria executar certas configurações de fantoches com base no tipo de servidor para o qual ele foi configurado. Deveria ser bastante simples fazer algo semelhante, mas usar atributos para executar tarefas diferentes dependendo da situação.

Configurei para que os servidores sejam descritos normalmente no Capistrano, como:

role :web, "mywebhost" #attributes to the server can be added at the end

Então criei uma tarefa para inicializar todos os servidores para ter certeza de que eles tinham fantoches. Depois disso adicionei comandos para executar após a tarefa de bootstrap e em qual função. Essas condições podem tirar vantagem dos atributos.

after "bootstrap", :roles=>[:web] do 
   # here we place code specific for configuring the web role using puppet
   try_sudo("puppet apply config/puppet/web.pp")
end

Você pode consultar o link a seguir para obter inspiração para executar tarefas com base em atributos:puxando cordéis de fantoches com capistrano

Este exemplo é para fantoche, mas você poderia simplesmente desconsiderar o fantoche e criar a estrutura capistrano que desejar.

Eu tenho um repositório de teste configurado no github que descreve isso. Ainda preciso adicionar o leia-me, mas você deve encontrar o que precisa aqui:fantoche com boné

informação relacionada