Quais são as estratégias comuns para o gerenciamento de configuração no EC2?

6

Sem usar um serviço de configuração em nuvem de terceiros, quais são os padrões / estratégias comuns ou white papers escritos sobre o assunto do gerenciamento de configuração com o EC2? Especificamente sobre como configurar e provisionar novas instâncias na inicialização, estratégias de implantação de código, etc ...

    
por James 04.06.2012 / 00:21

2 respostas

6

Eu juntei nosso método para inicializar o EC2 a partir de dezenas de postagens de blog. Ainda um trabalho em andamento, mas usamos cloud-init para conectar a instância ao nosso Puppet master, Puppet para configurar todos os pacotes para o papel que esta instância desempenhará e Webistrano (uma GUI para Capistrano) para implantar nosso código nos servidores.

Se você construir suas próprias imagens de máquina, você pode construir praticamente qualquer sistema que desejar, mas nós queremos ir com as imagens oficiais do Ubuntu disponíveis publicamente, que não possuem software de gerenciamento de configuração instalado.

Então, usamos o cloud-init para inicializar uma instância. O Cloud-init é um pacote presente no Ubuntu e no Amazon Linux AMI. Ele permite que vários tipos de dados sejam transmitidos para uma instância à medida que ela é criada, por meio da opção de metadados 'dados de usuário' do EC2. Os dados transmitidos via user-data são executados pelo cloud-init como a instância inicializou e podem assumir várias formas, como shell scripts, cloud-config yaml, etc.

Este post mostra um exemplo do uso do cloud-init, semelhante à forma como o fazemos: link

E aqui está a nossa versão:

#cloud-config
apt_update: true
apt_upgrade: true
packages:
- puppet
puppet:
  conf:
    agent:
      server: "puppet.example.com"
      certname: "%i.web.cluster1.eu-west-1.ec2"

Assim que a instância inicializar, ele instalará o Puppet e o conectará ao nosso mestre de marionetes. Assim que você permitir que ele se conecte ao mestre (assinado seu certificado), a instância começará a se configurar automaticamente. O mestre usará uma regex no arquivo nodes.pp para corresponder ao certname da instância, atribuindo-lhe uma função. O mestre é então capaz de enviar um catálogo para o agente fantoche, que usa isso para se configurar.

Alguns minutos após a inicialização, a instância está pronta para uso. Se precisarmos implantar qualquer código no nó, não usamos o Puppet para isso, mas o Webistrano. No momento, adicionamos manualmente o nó à configuração do Webistrano, mas pretendemos usar o MCollective para fazê-lo automaticamente com base nos metadados do nó.

    
por 04.06.2012 / 01:51
1

Boto e Tecido são ótimos para isso. Aqui está um artigo sobre isso no SeoMoz. Minha estratégia atual tem sido semelhante, mas usa o Fabric para executar os comandos do shell da Amazon localmente.

As instâncias do EC2 também podem consultar metadados que foram atribuídos a elas durante a implantação, o que, em combinação com uma AMI personalizada, pode ser muito eficiente.

(estou limitado ao número de links que posso postar; o Boto é simples o suficiente para o google)

    
por 04.06.2012 / 00:53