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.