Como faço para implantar atualizações contínuas no meu grupo do Auto Scaling quando não há alterações no modelo de inicialização no CloudFormation?

2 minuto de leitura
0

Quero atualizações contínuas em meu grupo do Auto Scaling do Amazon Elastic Compute Cloud (Amazon EC2) em cada atualização de pilha do AWS CloudFormation. Não quero alterar o modelo de inicialização toda vez.

Resolução

Para implantar atualizações contínuas para um grupo do Auto Scaling, use o atributo UpdatePolicy.

Na configuração de execução do modelo do CloudFormation, é uma prática recomendada referenciar o parâmetro Toggle na propriedade UserData do tipo de recurso AWS::EC2::LaunchTemplate. Ao alterar o valor de Toggle, por exemplo, de verdadeiro para falso, durante uma atualização de pilha, altere a propriedade de UserData. Essa ação faz com que o CloudFormation crie uma nova versão do modelo de inicialização.

A resolução a seguir pressupõe que você configurou a política AutoScalingRollingUpdate para o grupo do Auto Scaling e configurou este para fazer referência a AWS::EC2::LaunchTemplate.

Importante: certifique-se de não interromper outros elementos na propriedade UserData ao adicionar o parâmetro Toggle ao seu modelo.

Para configurar atualizações contínuas, conclua as seguintes etapas:

  1. Em seu modelo do CloudFormation, defina Toggle como parâmetro.
    Para um arquivo JSON, insira o seguinte código:

        "Parameters": {
            "Toggle": {
                "Type": "String",
                "AllowedValues": [
                    "true",
                    "false"
                ],
                "Default": "true",
                "Description": "Toggle parameter to force ASG update"
            }
        }

    Para um arquivo YAML, insira o seguinte código:

    Parameters:
      Toggle:
        Type: String
        AllowedValues:
          - 'true'
          - 'false'
        Default: 'true'
        Description: 'Toggle parameter to force ASG update'
  2. Na configuração de execução do modelo, faça referência ao parâmetro Toggle na propriedade UserData.
    Exemplo de JSON:

            "LaunchTemplate": {
                "Type": "AWS::EC2::LaunchTemplate",
                "Properties": {
                    "LaunchTemplateData": {
                        "ImageId": { "Ref": "ImageId" },
                        "UserData": {
                            "Fn::Base64": {
                                "Fn::Join": [
                                    "",
                                    [
                                        "#!/bin/bash\n",
                                        "echo \"Toggle parameter is set to ",
                                        {
                                            "Ref": "Toggle"
                                        },
                                        "\"\n"
                                        ...
                                        ...
                                    ]
                                ]
                            }
                        },
                        "InstanceType": { "Ref": "InstanceType" }
                    }
                }

    Exemplo de YAML:

      LaunchTemplate:
        Type: AWS::EC2::LaunchTemplate
        Properties:
          LaunchTemplateData:
            ImageId: !Ref ImageId
            UserData:
              Fn::Base64:
                !Sub |
                  #!/bin/bash
                  echo "Toggle parameter is set to ${Toggle}"
                  ...
                  ...
            InstanceType: !Ref InstanceType
  3. Crie sua pilha.

  4. Para implantar atualizações contínuas, altere o valor do parâmetro Toggle de verdadeiro para falso ou de falso para verdadeiro, dependendo da configuração atual.

Observação: você também pode usar a resolução anterior em propriedades em que uma atualização exige uma substituição, como LaunchTemplateName.

AWS OFICIAL
AWS OFICIALAtualizada há 2 meses