Implantação contínua com formação de nuvem e cfn-hup

A formação de nuvens permite criar pilhas de aplicativos do zero no EC2. Em meu projeto, eu uso a formação de nuvem para fazer implantações contínuas usando cfn-hup com cada git push. Se você nunca usou a formação de nuvens antes, há muitos tutoriais na web para você começar.

Estrutura:

O aplicativo é empacotado em um RPM usando FPM com todas as dependências do aplicativo e scripts de pós-instalação a serem executados quando o RPM é instalado.

Empacotamento e CFN-Script:

Como parte da construção do CI, o RPM do aplicativo é criado e carregado no S3 marcado como ‘mais recente’ e o script cfn baixa o RPM e o instala. Um exemplo se parece com:

curl package_url > /tmp/earmark-app.rpm
yum erase
-y earmark-app
yum install
/tmp/earmark-app.rpm

Configuração CFN-HUP:

[main]
stack
=stack-name
region
=ap-southeast-2

Esperando pela condição do recurso:

Você pode usar ApplicationWaitHandle e ApplicationWaitCondition para sinalizar a implantação da formação de nuvem para esperar até que a instalação do pacote seja concluída. Você pode então usar o cfn-signal para indicar a pilha de formação de nuvens que a ação particular foi concluída. Se o sinal cfn não for recebido dentro de um período de tempo especificado, a criação da pilha falhará. Aqui está um exemplo WaitCondition:

ApplicationWaitCondition : {
Type : AWS::CloudFormation::WaitCondition”,
Properties : {
Count : 1”,
Handle : {“Ref : ApplicationWaitHandle”},
Timeout : 300
}
},
ApplicationWaitHandle : {
Type : AWS::CloudFormation::WaitConditionHandle
}
</code>
You can then wait on this condition in your stack by using:
<code>
LoadBalancer”: {
DependsOn”: ApplicationWaitCondition”,
}

Formação de nuvem de sinalização:

Você pode então sinalizar a formação da nuvem que a instalação foi bem-sucedida usando:

"/opt/aws/bin/cfn-signal -e 0 -r "Application Installation Complete." ‘", { "Ref" : "ApplicationWaitHandle" }, "’n"

Limitações:

O Cfn-hup verifica se há atualizações na pilha a cada 15 minutos por padrão e não há como alterar a duração.
Cfn-hup não pode ser usado para sinalizar a espera da pilha durante as atualizações da pilha.
As falhas Cfn-hup não são propagadas de volta para os eventos da pilha, o que pode resultar em falsos positivos mesmo quando a atualização falha.