Tutoriel : Création d'un pipeline avec des actions AWS CloudFormation StackSets de déploiement - AWS CodePipeline

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : Création d'un pipeline avec des actions AWS CloudFormation StackSets de déploiement

Dans ce didacticiel, vous allez utiliser la AWS CodePipeline console pour créer un pipeline avec des actions de déploiement permettant de créer un ensemble de piles et de créer des instances de pile. Lorsque le pipeline s'exécute, le modèle crée un ensemble de piles et crée et met à jour les instances dans lesquelles l'ensemble de piles est déployé.

Il existe deux manières de gérer les autorisations pour un ensemble de piles : les rôles IAM autogérés et les rôles AWS IAM gérés. Ce didacticiel fournit des exemples d'autorisations autogérées.

Pour utiliser Stacksets de la manière la plus efficace possible CodePipeline, vous devez avoir une compréhension claire des concepts sous-jacents AWS CloudFormation StackSets et de leur fonctionnement. Voir les StackSets concepts dans le guide de AWS CloudFormation l'utilisateur.

Prérequis

Pour les opérations de stack set, vous utilisez deux comptes différents : un compte d'administration et un compte cible. Vous créez des ensembles de piles dans le compte administrateur. Vous créez des piles individuelles qui appartiennent à un ensemble de piles dans le compte cible.

Pour créer un rôle d'administrateur avec votre compte d'administrateur
Pour créer un rôle de service dans le compte cible

Étape 1 : télécharger le AWS CloudFormation modèle d'exemple et le fichier de paramètres

Créez un compartiment source pour vos fichiers de modèles et de paramètres de stack set. Téléchargez l'exemple de fichier AWS CloudFormation modèle, configurez un fichier de paramètres, puis compressez les fichiers avant de les télécharger dans votre compartiment source S3.

Note

Assurez-vous de compresser les fichiers source avant de les télécharger dans votre compartiment source S3, même si le seul fichier source est le modèle.

Pour créer un compartiment source S3
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez Créer un compartiment.

  3. Pour Bucket name (Nom de compartiment), saisissez un nom pour le compartiment.

    Dans Région, choisissez la région dans laquelle vous souhaitez créer votre pipeline. Choisissez Créer un compartiment.

  4. Une fois le compartiment créé, une bannière de réussite apparaît. Choisissez Go to bucket details (Accéder aux détails du compartiment).

  5. Dans l'onglet Propriétés, choisissez Versioning. Choisissez Activer la gestion des versions, puis Enregistrer.

Pour créer le fichier AWS CloudFormation modèle
  1. Téléchargez l'exemple de fichier modèle suivant pour générer CloudTrail la configuration des ensembles de piles :https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml.

  2. Enregistrez le fichier sous le nom template.yml.

Pour créer le fichier parameters.txt
  1. Créez un fichier contenant les paramètres de votre déploiement. Les paramètres sont des valeurs que vous souhaitez mettre à jour dans votre pile lors de l'exécution. Le fichier d'exemple suivant met à jour les paramètres du modèle de votre ensemble de piles afin de permettre la journalisation, la validation et les événements globaux.

    [ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
  2. Enregistrez le fichier sous le nom parameters.txt.

Pour créer le fichier accounts.txt
  1. Créez un fichier avec les comptes sur lesquels vous souhaitez créer des instances, comme indiqué dans l'exemple de fichier suivant.

    [ "111111222222","333333444444" ]
  2. Enregistrez le fichier sous le nom accounts.txt.

Pour créer et télécharger des fichiers source
  1. Combinez les fichiers dans un seul fichier ZIP. Vos fichiers devraient ressembler à ceci dans votre fichier ZIP.

    template.yml parameters.txt accounts.txt
  2. Téléchargez le fichier ZIP dans votre compartiment S3. Ce fichier est l'artefact source créé par l'assistant de création de pipeline pour votre action de déploiement dans CodePipeline.

Étape 2 : Créer votre pipeline

Dans cette section, vous créez un pipeline avec les actions suivantes :

  • Un stage source avec une action source S3 où l'artefact source est votre fichier modèle et tous les fichiers source associés.

  • Une phase de déploiement avec une action de déploiement d'un ensemble de AWS CloudFormation piles qui crée l'ensemble de piles.

  • Une phase de déploiement avec une action de déploiement d'instances de AWS CloudFormation pile qui crée les piles et les instances au sein des comptes cibles.

Pour créer un pipeline avec une CloudFormationStackSet action
  1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Sur la page Bienvenue, Démarrez ou Pipelines, choisissez Créer un pipeline.

  3. Dans l'Étape 1 : Choisir les paramètres d'un pipeline, dans Nom du pipeline, saisissez MyStackSetsPipeline.

  4. Dans Type de pipeline, choisissez V1 pour les besoins de ce didacticiel. Vous pouvez également choisir la V2 ; toutefois, notez que les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour plus d’informations, consultez Types de pipelines.

  5. Dans Rôle de service, choisissez Nouveau rôle de service pour autoriser CodePipeline la création d'un rôle de service dans IAM.

  6. Dans Artifact Store, conservez les valeurs par défaut.

    Note

    Il ne s'agit pas du compartiment source de votre code source. Il s'agit du magasin d'artefacts pour votre pipeline. Un magasin d'artefacts distinct, tel qu'un compartiment S3, est nécessaire pour chaque pipeline. Lorsque vous créez ou modifiez un pipeline, vous devez disposer d'un compartiment d'artefacts dans la région du pipeline et d'un compartiment d'artefacts par AWS région dans laquelle vous exécutez une action.

    Pour plus d’informations, consultez Artefacts d'entrée et de sortie et CodePipeline référence de structure de pipeline.

    Choisissez Suivant.

  7. Sur la page Étape 2 : Ajouter une étape source, dans Fournisseur de source, choisissez Amazon S3.

  8. Dans Bucket, entrez le compartiment source S3 que vous avez créé pour ce didacticiel, tel queBucketName. Dans la clé d'objet S3, entrez le chemin du fichier et le nom de fichier de votre fichier ZIP, par exempleMyFiles.zip.

  9. Choisissez Suivant.

  10. Dans Step 3: Add build stage (Étape 3 : Ajouter une étape de génération), choisissez Skip build stage (Ignorer l'étape de génération) et acceptez le message d'avertissement en choisissant à nouveau Skip (Ignorer).

    Choisissez Suivant.

  11. Dans Étape 4 : Ajouter une étape de déploiement :

    1. Dans Deploy provider, choisissez AWS CloudFormation Stack Set.

    2. Dans Nom de l'ensemble de piles, entrez le nom de l'ensemble de piles. Il s'agit du nom de l'ensemble de piles créé par le modèle.

      Note

      Notez le nom de votre stack set. Vous l'utiliserez lorsque vous ajouterez la deuxième action de StackSets déploiement à votre pipeline.

    3. Dans Chemin du modèle, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé votre fichier modèle. Par exemple, entrez ce qui suit en utilisant le nom SourceArtifact de l'artefact source par défaut.

      SourceArtifact::template.yml
    4. Dans Cibles de déploiement, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé le fichier de vos comptes. Par exemple, entrez ce qui suit en utilisant le nom SourceArtifact de l'artefact source par défaut.

      SourceArtifact::accounts.txt
    5. Dans Cible de déploiement Régions AWS, entrez une région pour le déploiement de votre instance de pile initiale, telle queus-east-1.

    6. Élargissez les options de déploiement. Dans Paramètres, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé votre fichier de paramètres. Par exemple, entrez ce qui suit en utilisant le nom SourceArtifact de l'artefact source par défaut.

      SourceArtifact::parameters.txt

      Pour entrer les paramètres sous forme d'entrée littérale plutôt que de chemin de fichier, entrez ce qui suit :

      ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
    7. Dans Capabilities, sélectionnez CAPABILITY_IAM et CAPABILITY_NAMED_IAM.

    8. Dans Modèle d'autorisation, choisissez SELF_MANAGED.

    9. Dans Pourcentage de tolérance aux défaillances, entrez20.

    10. Dans Pourcentage maximal de simultanés, entrez25.

    11. Choisissez Suivant.

    12. Choisissez Créer un pipeline. Votre pipeline s'affiche.

    13. Autorisez votre pipeline s'exécuter.

Étape 3 : Afficher le déploiement initial

Consultez les ressources et le statut de votre déploiement initial. Après avoir vérifié que le déploiement a bien créé votre stack set, vous pouvez ajouter la deuxième action à votre étape de déploiement.

Pour consulter les ressources
  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

  2. Sous Pipelines, choisissez votre pipeline et choisissez Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  3. Choisissez l' AWS CloudFormation action sur l'CloudFormationStackSetaction de votre pipeline. Le modèle, les ressources et les événements de votre stack set sont affichés dans la AWS CloudFormation console.

  4. Dans le panneau de navigation de gauche, choisissez StackSets. Dans la liste, choisissez le nouvel ensemble de piles.

  5. Choisissez l'onglet Stack instances. Vérifiez qu'une instance de stack pour chaque compte que vous avez fourni a été créée dans la région us-east-1. Vérifiez que le statut de chaque instance de pile estCURRENT.

Étape 4 : Ajouter une CloudFormationStackInstances action

Créez une action suivante dans votre pipeline qui permettra de AWS CloudFormation StackSets créer les instances de pile restantes.

Pour créer une action suivante dans votre pipeline
  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

    Sous Pipelines, choisissez votre pipeline et choisissez Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  2. Choisissez de modifier le pipeline. Le pipeline s'affiche en mode édition.

  3. À l'étape du déploiement, choisissez Modifier.

  4. Sous l'action de déploiement AWS CloudFormation Stack Set, choisissez Ajouter un groupe d'actions.

  5. Sur la page Modifier l'action, ajoutez les détails de l'action :

    1. Dans Nom de l'action, entrez le nom de l'action.

    2. Dans Action provider, sélectionnez AWS CloudFormation Stack Instances.

    3. Sous Artefacts d'entrée, sélectionnez SourceArtifact.

    4. Dans Nom de l'ensemble de piles, entrez le nom de l'ensemble de piles. Il s'agit du nom du stack set que vous avez fourni lors de la première action.

    5. Dans Cibles de déploiement, entrez le nom de l'artefact et le chemin du fichier dans lequel vous avez chargé le fichier de vos comptes. Par exemple, entrez ce qui suit en utilisant le nom SourceArtifact de l'artefact source par défaut.

      SourceArtifact::accounts.txt
    6. Dans Cible de déploiement Régions AWS, entrez les régions pour le déploiement de vos instances de stack restantes, telles que us-east-2 et eu-central-1 comme suit :

      us-east2, eu-central-1
    7. Dans Pourcentage de tolérance aux défaillances, entrez20.

    8. Dans Pourcentage maximal de simultanés, entrez25.

    9. Choisissez Enregistrer.

    10. .Publiez manuellement une modification. Votre pipeline mis à jour s'affiche avec deux actions dans la phase de déploiement.

Étape 5 : Afficher les ressources du stack set pour votre déploiement

Vous pouvez consulter les ressources et le statut du déploiement de votre stack set.

Pour consulter les ressources
  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

  2. Sous Pipelines, choisissez votre pipeline, puis cliquez sur Afficher. Le schéma illustre les étapes source et de déploiement de votre pipeline.

  3. Choisissez l' AWS CloudFormation action sur l'AWS CloudFormation Stack Instancesaction de votre pipeline. Le modèle, les ressources et les événements de votre stack set sont affichés dans la AWS CloudFormation console.

  4. Dans le panneau de navigation de gauche, choisissez StackSets. Dans la liste, choisissez votre ensemble de piles.

  5. Choisissez l'onglet Stack instances. Vérifiez que toutes les instances de stack restantes pour chaque compte que vous avez fourni ont été créées ou mises à jour dans les régions attendues. Vérifiez que le statut de chaque instance de pile estCURRENT.

Étape 6 : Mettre à jour votre stack set

Mettez à jour votre stack set et déployez la mise à jour sur les instances. Dans cet exemple, vous modifiez également les cibles de déploiement que vous souhaitez désigner pour la mise à jour. Les instances qui ne font pas partie de la mise à jour passent à un statut obsolète.

  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

  2. Sous Pipelines, choisissez votre pipeline, puis sélectionnez Modifier. À l'étape du déploiement, choisissez Modifier.

  3. Choisissez de modifier l'action AWS CloudFormation Stack Set dans votre pipeline. Dans Description, remplacez la description existante par une nouvelle description pour l'ensemble de piles.

  4. Choisissez de modifier l'action AWS CloudFormation Stack Instances dans votre pipeline. Dans Cible de déploiement Régions AWS, supprimez la us-east-2 valeur saisie lors de la création de l'action.

  5. Enregistrez les Modifications. Choisissez Libérer la modification pour exécuter votre pipeline.

  6. Ouvrez votre action dans AWS CloudFormation. Choisissez l'onglet StackSet Info. Dans StackSet la description, vérifiez que la nouvelle description est affichée.

  7. Choisissez l'onglet Stack instances. Sous Status, vérifiez que le statut des instances de pile dans us-east-2 est. OUTDATED