Procédure pas à pas : création d'associations qui exécutent Ansible des playbooks - AWS Systems Manager

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.

Procédure pas à pas : création d'associations qui exécutent Ansible des playbooks

Vous pouvez créer des State Manager associations qui exécutent Ansible des playbooks à l'aide du document AWS-ApplyAnsiblePlaybooks SSM. State Managerest une capacité de AWS Systems Manager. Ce document offre les avantages suivants pour l'exécution de manuels stratégiques :

  • Prise en charge de l'exécution de manuels stratégiques complexes

  • Support pour le téléchargement de playbooks depuis Amazon Simple Storage Service (Amazon S3) GitHub et depuis Amazon Simple Storage Service (Amazon S3)

  • Prise en charge de la structure de manuel stratégique compressé

  • Journalisation améliorée

  • Possibilité de spécifier le manuel stratégique à exécuter lorsque les manuels stratégiques sont regroupés

Note

Systems Manager inclut deux documents SSM qui vous permettent de créer des State Manager associations qui exécutent des Ansible playbooks : AWS-RunAnsiblePlaybook et. AWS-ApplyAnsiblePlaybooks Le document AWS-RunAnsiblePlaybook est obsolète. Il reste disponible dans Systems Manager à des fins de conservation. Nous vous recommandons d'utiliser le document AWS-ApplyAnsiblePlaybooks en raison des améliorations décrites ici.

Les associations qui exécutent Ansible des playbooks ne sont pas prises en charge surmacOS.

Prise en charge de l'exécution de manuels stratégiques complexes

Le document AWS-ApplyAnsiblePlaybooks prend en charge les manuels stratégiques complexes et groupés, car il copie toute la structure de fichiers dans un répertoire local avant d'exécuter le manuel stratégique principal spécifié. Vous pouvez fournir des manuels stratégiques source dans des fichiers Zip ou dans une structure de répertoires. Le fichier ou le répertoire Zip peut être stocké dans GitHub Amazon S3.

Prise en charge du téléchargement de manuels stratégiques à partir de GitHub

Le document AWS-ApplyAnsiblePlaybooks utilise le plug-in aws:downloadContent pour télécharger les fichiers du manuel stratégique. Les fichiers peuvent être stockés GitHub dans un seul fichier ou sous la forme d'un ensemble combiné de fichiers playbook. Pour télécharger du contenu depuisGitHub, spécifiez les informations relatives à votre GitHub référentiel au format JSON. Voici un exemple.

{ "owner":"TestUser", "repository":"GitHubTest", "path":"scripts/python/test-script", "getOptions":"branch:master", "tokenInfo":"{{ssm-secure:secure-string-token}}" }

Prise en charge du téléchargement de playbooks à partir d'Amazon S3

Vous pouvez également stocker et télécharger Ansible des playbooks dans Amazon S3 sous forme de fichier .zip unique ou de structure de répertoire. Pour télécharger du contenu depuis Amazon S3, vous devez spécifier le chemin d'accès au fichier. Voici deux exemples :

Exemple 1 : Télécharger un fichier de manuel stratégique spécifique

{ "path":"https://s3.amazonaws.com/doc-example-bucket/playbook.yml" }

Exemple 2 : Télécharger le contenu d'un répertoire

{ "path":"https://s3.amazonaws.com/doc-example-bucket/ansible/webservers/" }
Important

Si vous spécifiez Amazon S3, le profil d'instance AWS Identity and Access Management (IAM) sur vos nœuds gérés doit être configuré avec la AmazonS3ReadOnlyAccess politique. Pour plus d'informations, consultez la section Configurer des autorisations d'instance pour Systems Manager.

Prise en charge de la structure de manuel stratégique compressé

Le document AWS-ApplyAnsiblePlaybooks vous permet d'exécuter des fichiers .zip compressés dans le bundle téléchargé. Le document vérifie si les fichiers téléchargés contiennent un fichier compressé au format .zip. Si un fichier .zip est trouvé, le document décompresse automatiquement le fichier, puis exécute l'automatisation spécifiéeAnsible.

Journalisation améliorée

Le document AWS-ApplyAnsiblePlaybooks inclut un paramètre facultatif pour spécifier différents niveaux de journalisation. Spécifiez -v pour une journalisation avec un niveau de détail faible, -vv ou -vvv pour une journalisation avec un niveau de détail moyen et -vvvv pour une journalisation avec u niveau de débogage. Ces options correspondent directement aux options de Ansible verbosité.

Possibilité de spécifier le manuel stratégique à exécuter lorsque les manuels stratégiques sont regroupés

Le document AWS-ApplyAnsiblePlaybooks inclut un paramètre obligatoire pour spécifier le manuel stratégique à exécuter lorsque plusieurs manuels sont regroupés. Cette option offre une flexibilité pour exécuter des manuels stratégiques afin de prendre en charge différents cas d'utilisation.

Dépendances installées

Si vous spécifiez True pour le InstallDependenciesparamètre, Systems Manager vérifie que les dépendances suivantes sont installées sur vos nœuds :

  • Ubuntu Server/Debian Server: Apt-get (Gestion des paquets), Python 3, Unzip Ansible

  • Amazon Linux : Ansible

  • RHEL : Python 3Ansible, décompressez

Si une ou plusieurs de ces dépendances sont introuvables, Systems Manager les installe automatiquement.

Création d'une association qui exécute Ansible des playbooks (console)

La procédure suivante décrit comment utiliser la console Systems Manager pour créer une State Manager association qui exécute des Ansible playbooks à l'aide du AWS-ApplyAnsiblePlaybooks document.

Pour créer une association qui exécute des Ansible playbooks (console)
  1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation, sélectionnez State Manager.

    -ou-

    Si la page d' AWS Systems Manager accueil s'ouvre en premier, choisissez l'icône du menu ( 
    The menu icon
  ) pour ouvrir le volet de navigation, puis choisissez State Manager.

  3. Sélectionnez State Manager, puis Create association (Créer une association).

  4. Pour Name (Nom), spécifiez un nom qui vous aide à mémoriser l'objectif de l'association.

  5. Dans la liste Document, sélectionnez AWS-ApplyAnsiblePlaybooks.

  6. Dans la section Paramètres, pour Type de source, choisissez S3 GitHubou S3.

    GitHub

    Si vous le souhaitez GitHub, entrez les informations du référentiel au format suivant.

    { "owner":"user_name", "repository":"name", "path":"path_to_directory_or_playbook_to_download", "getOptions":"branch:branch_name", "tokenInfo":"{{(Optional)_token_information}}" }

    S3

    Si vous sélectionnez S3, saisissez les informations de chemin au format suivant.

    { "path":"https://s3.amazonaws.com/path_to_directory_or_playbook_to_download" }
  7. Pour Install Dependencies (Installer des dépendances), sélectionnez une option.

  8. (Facultatif) Pour Playbook File (Fichier de manuel stratégique), entrez un nom de fichier. Si le playbook est contenu dans un fichier .zip, spécifiez un chemin d'accès relatif au fichier .zip.

  9. (Facultatif) Pour Variables supplémentaires, entrez les variables auxquelles vous State Manager souhaitez envoyer au Ansible moment de l'exécution.

  10. (Facultatif) Pour Check (Vérifier), sélectionnez une option.

  11. (Facultatif) Pour Verbose (Détails), sélectionnez une option.

  12. Pour Targets (Cibles), sélectionnez une option. Pour plus d'informations sur l'utilisation des cibles, consultez À propos des cibles et des contrôles du débit dans les associations State Manager.

  13. Dans la section Specify schedule (Spécifier une planification), sélectionnez On Schedule (Selon planification) ou No schedule (Pas de planification). Si vous sélectionnez On Schedule (Selon planification), utilisez les boutons fournis pour créer une planification de type cron ou rate pour l'association.

  14. Dans la section Advanced options (Options avancées), pour Compliance severity (Sévérité de conformité), sélectionnez un niveau de sévérité pour l'association. Les rapports de conformité indiquent si l'état de l'association est conforme ou non conforme, ainsi que le niveau de sévérité que vous spécifiez ici. Pour plus d’informations, consultez A propos de la conformité des associations State Manager.

  15. Dans la section Rate control (Contrôle du débit), configurez des options pour l'exécution d'associations State Manager dans un parc de nœuds gérés. Pour plus d'informations sur l'utilisation des contrôles de débit, consultez À propos des cibles et des contrôles du débit dans les associations State Manager.

    Dans la section Simultanéité, sélectionnez une option :

    • Sélectionnez targets (cibles) pour entrer un nombre absolu de cibles pouvant exécuter l'association simultanément.

    • Sélectionnez percentage (pourcentage) pour saisir un pourcentage de l'ensemble de cibles pouvant exécuter l'association simultanément.

    Dans la section Error threshold (Seuil d'erreurs), sélectionnez une option :

    • Sélectionnez errors (erreurs) pour saisir un nombre absolu d'erreurs autorisées avant que State Manager ne cesse d'exécuter des associations sur des cibles supplémentaires.

    • Sélectionnez percentage (pourcentage) pour saisir un pourcentage d'erreurs autorisées avant que State Manager ne cesse d'exécuter des associations sur des cibles supplémentaires.

  16. (Facultatif) Dans Output options (Options de sortie), pour enregistrer la sortie de la commande dans un fichier, sélectionnez Enable writing to an S3 bucket (Autoriser l'écriture dans un compartiment S3) Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.

    Note

    Les autorisations S3 qui donnent la possibilité d'écrire les données dans un compartiment S3 sont celles du profil d'instance attribué au nœud géré, et non celles de l'utilisateur IAM qui effectue cette tâche. Pour plus d'informations, veuillez consulter les rubriques Configurer des autorisations d'instance pour Systems Manager ou Créer une fonction du service IAM pour un environnement hybride. En outre, si le compartiment S3 spécifié se trouve dans un autre compartiment Compte AWS, vérifiez que le profil d'instance ou le rôle de service IAM associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

  17. Sélectionnez Create Association (Créer une association).

Note

Si vous utilisez des identifications pour créer une association sur un ou plusieurs nœuds cibles, puis que vous supprimez les identifications d'un nœud, ce nœud n'exécute plus l'association. Le nœud est dissocié du document State Manager.

Créez une association qui exécute des Ansible playbooks (CLI)

La procédure suivante décrit comment utiliser le AWS Command Line Interface (AWS CLI) pour créer une State Manager association qui exécute des Ansible playbooks à l'aide du AWS-ApplyAnsiblePlaybooks document.

Pour créer une association qui exécute des Ansible playbooks (CLI)
  1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

    Pour de plus amples informations, consultez Installation ou mise à jour de la version la plus récente de l' AWS CLI.

  2. Exécutez l'une des commandes suivantes pour créer une association qui exécute les Ansible playbooks en ciblant les nœuds à l'aide de balises. Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations. La commande (A) indique GitHub le type de source. La commande (B) spécifie Amazon S3 comme type de source.

    (A) GitHub source

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"],"TimeoutSeconds":["3600"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"], "TimeoutSeconds":["3600"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Voici un exemple.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ansibleDocumentTest\", \"repository\": \"Ansible\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True"],"PlaybookFile":["hello-world-playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"

    Source S3 (B)

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Voici un exemple.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/DOC-EXAMPLE-BUCKET/playbook.yml\"}"],"InstallDependencies":["True"],"PlaybookFile":["playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"
    Note

    Les associations State Manager ne prennent pas en charge toutes les expressions cron et rate. Pour plus d'informations sur la création d'expressions cron et rate pour des associations, consultez Référence : Expressions Cron et Rate pour Systems Manager.

    Le système tente de créer l'association sur les nœuds et applique immédiatement l'état.

  3. Exécutez la commande suivante pour afficher le statut mis à jour de l'association que vous venez de créer.

    aws ssm describe-association --association-id "ID"