Comment déclencher des mises à jour continues lorsqu'il n'existe pas de modifications de la configuration de lancement dans AWS CloudFormation ?

Date de la dernière mise à jour : 20/05/2019

Si je mets à jour ma pile AWS CloudFormation, les instances dans le groupe Auto Scaling ne sont pas mises à jour, parce que je ne modifie pas la configuration de lancement. Toutefois, je veux déclencher des mises à jour continues dans mon groupe Auto Scaling à chaque mise à jour de la pile, même si je ne modifie pas la configuration de lancement.

Brève description

Les mises à jour continues d'un groupe Auto Scaling sont déclenchées uniquement si des conditions spécifiques de l'attribut UpdatePolicy sont respectées.

Pour déclencher des mises à jour continues, vous pouvez créer un paramètre de déclenchement (Toggle, dans cet exemple) dans la configuration de lancement de votre modèle AWS CloudFormation. Toutefois, si vous modifiez la valeur du paramètre Toggle au cours d'une mise à jour de pile, la propriété UserData est modifiée. Toute modification de UserData nécessite un remplacement. AWS CloudFormation détecte la modification de UserData, puis remplace la ressource LaunchConfiguration. Ce remplacement déclenche la mise à jour continue Auto Scaling définie par l'attribut UpdatePolicy.

Résolution

Les étapes suivantes supposent que votre stratégie AutoScalingRollingUpdate est configurée pour votre groupe Auto Scaling et que ce dernier est configuré pour faire référence à LaunchConfiguration.

Important : veillez à ne pas perturber d'autres éléments dans la propriété UserData lorsque vous ajoutez le paramètre Toggle à votre modèle. N'ajoutez pas le paramètre Toggle avant cfn-signal.

1.    Dans votre modèle AWS CloudFormation, définissez votre paramètre (Toggle, dans cet exemple). Consultez les exemples JSON et YAML suivants.

JSON :

"Parameters": {
        "Toggle": {
            "Type": "String",
            "AllowedValues": ["true","false"],
            "Default": "true"
        }
    }

YAML :

Parameters:
  Toggle:
    Type: String
    AllowedValues:
      - 'true'
      - 'false'
    Default: 'true'

2.    Dans la configuration de lancement de votre modèle, faites référence à Toggle dans la propriété UserData, puis lancez votre pile. Consultez les exemples JSON et YAML suivants.

JSON :

"LaunchConfig" : {
   "Type" : "AWS::AutoScaling::LaunchConfiguration",
   "Properties" : {
         "ImageId" : { "Ref" : "ImageID" },
         "UserData" : { "Fn::Base64" : { "Ref" : "Toggle" }
                        ...
                        ...
                        },        
         "InstanceType" : { "Ref" : "Type" }
    		}
			}

YAML :

LaunchConfig:
  Type: 'AWS::AutoScaling::LaunchConfiguration'
  Properties:
    ImageId: !Ref ImageID
    UserData:
      'Fn::Base64': !Ref Toggle
      ...
      ...
    InstanceType: !Ref Type

Important : pour déclencher des mises à jour continues lorsque vous mettez à jour votre pile, remplacez la valeur true du paramètre Toggle par la valeur false ou la valeur false par true en fonction de sa valeur initiale avant de lancer la pile.

Remarque : vous pouvez utiliser le paramètre Toggle dans les propriétés où une mise à jour requiert le remplacement (par exemple, LaunchConfigurationName) et pour les ressources comme AWS::EC2::LaunchTemplate.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?