Création d'associations qui exécutent Chef des recettes - 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.

Création d'associations qui exécutent Chef des recettes

Vous pouvez créer des State Manager associations qui exécutent Chef des recettes à l'aide du AWS-ApplyChefRecipes SSM document. State Managerest une capacité de AWS Systems Manager. Vous pouvez cibler les nœuds gérés par Systems Manager basés sur Linux avec le document. AWS-ApplyChefRecipes SSM Ce document offre les avantages suivants pour les Chef recettes de course à pied :

  • Supporte plusieurs versions de Chef (Chef11 à Chef 18).

  • Installe automatiquement le logiciel Chef client sur les nœuds cibles.

  • Il exécute éventuellement des contrôles de conformité Systems Manager sur les nœuds cibles et stocke les résultats des contrôles de conformité dans un compartiment Amazon Simple Storage Service (Amazon S3).

  • Il exécute plusieurs livres de cuisine et recettes en une seule fois du document.

  • Il peut exécuter des recettes en mode why-run, pour afficher lesquelles changeront sur les nœuds cibles sans y apporter de modifications.

  • Applique éventuellement des JSON attributs personnalisés aux chef-client exécutions.

  • Applique éventuellement des JSON attributs personnalisés à partir d'un fichier source stocké à l'emplacement que vous spécifiez.

Vous pouvez utiliser les compartiments Git GitHub, HTTP, ou Amazon S3 comme sources de téléchargement pour les Chef livres de recettes et les recettes que vous spécifiez dans un AWS-ApplyChefRecipes document.

Note

Les associations qui exécutent Chef des recettes ne sont pas prises en charge surmacOS.

Premiers pas

Avant de créer un AWS-ApplyChefRecipes document, préparez vos livres de Chef recettes et votre référentiel de livres de recettes. Si vous n'avez pas encore de Chef livre de recettes que vous souhaitez utiliser, vous pouvez commencer par utiliser un HelloWorld livre de recettes de test préparé pour vous. AWS Le document AWS-ApplyChefRecipes pointe déjà vers ce livre de recettes par défaut. Vos livres de recettes doivent être configurés de la même manière que la structure de répertoire suivante. Dans l'exemple suivant, jenkins et nginx voici des exemples de Chef livres de cuisine disponibles Chef Supermarketsur le Chef site Web.

Bien que les livres de cuisine ne AWS puissent pas être officiellement pris en charge sur le Chef Supermarketsite Web, beaucoup d'entre eux fonctionnent avec le AWS-ApplyChefRecipes document. Voici des exemples de critères à déterminer lorsque vous testez un livre de recette de la communauté :

  • Le livre de recettes doit prendre en charge les systèmes d'exploitation basés sur Linux des nœuds gérés par Systems Manager que vous ciblez.

  • Le livre de recettes doit être valide pour la version du Chef client (Chef11 à Chef 18) que vous utilisez.

  • Le livre de recettes est compatible avec Chef Infra Client et ne nécessite pas de serveur Chef.

Vérifiez que vous pouvez accéder au Chef.io site Web afin que tous les livres de recettes que vous spécifiez dans votre liste d'exécution puissent être installés lors de l'exécution du document Systems Manager (SSMdocument). L'utilisation d'un fichier cookbooks imbriqué est prise en charge, mais pas obligatoire ; vous pouvez stocker des livres de recettes directement dans le niveau racine.

<Top-level directory, or the top level of the archive file (ZIP or tgz or tar.gz)> └── cookbooks (optional level) ├── jenkins │ ├── metadata.rb │ └── recipes └── nginx ├── metadata.rb └── recipes
Important

Avant de créer une State Manager association qui exécute des Chef recettes, sachez que le document exécuté installe le logiciel Chef client sur les nœuds gérés par Systems Manager, sauf si vous définissez la valeur de la version du Chef client sur. None Cette opération utilise un script d'installation provenant de Chef pour installer Chef les composants en votre nom. Avant de publier un AWS-ApplyChefRecipes document, assurez-vous que votre entreprise est en mesure de respecter toutes les exigences légales applicables, y compris les conditions de licence applicables à l'utilisation des Chef logiciels. Pour plus d'informations, consultez le Chefsite Web.

Systems Manager peut envoyer des rapports de conformité à un compartiment S3, à la console Systems Manager, ou rendre les résultats de conformité disponibles en réponse aux API commandes de Systems Manager. Pour exécuter des rapports de conformité Systems Manager, le profil d'instance attaché aux nœuds gérés par Systems Manager doit disposer des autorisations d'écriture dans le compartiment S3. Le profil d'instance doit disposer des autorisations nécessaires pour utiliser le Systems Manager PutComplianceItemAPI. Pour de plus amples informations sur Systems Manager, consultez Conformité d'AWS Systems Manager.

Journalisation de l'exécution du document

Lorsque vous exécutez un document Systems Manager (SSMdocument) à l'aide d'une State Manager association, vous pouvez configurer l'association pour choisir la sortie du document à exécuter, et vous pouvez envoyer la sortie à Amazon S3 ou Amazon CloudWatch Logs (CloudWatch Logs). Pour faciliter le dépannage lorsqu'une association est terminée, vérifiez que l'association est configurée pour écrire la sortie de commande dans un compartiment Amazon S3 ou dans CloudWatch des journaux. Pour de plus amples informations, veuillez consulter Utilisation d'associations dans Systems Manager.

Appliquer JSON des attributs aux cibles lors de l'exécution d'une recette

Vous pouvez spécifier JSON les attributs que votre Chef client doit appliquer aux nœuds cibles lors d'une exécution d'association. Lors de la configuration de l'association, vous pouvez fournir des données brutes JSON ou le chemin d'accès à un JSON fichier stocké dans Amazon S3.

Utilisez JSON des attributs lorsque vous souhaitez personnaliser le mode d'exécution de la recette sans avoir à modifier la recette elle-même, par exemple :

  • Remplacer un petit nombre d'attributs

    Utilisez JSON la personnalisation pour éviter d'avoir à gérer plusieurs versions d'une recette pour tenir compte de différences mineures.

  • Fournir des valeurs variables

    Utilisez le paramètre personnalisé JSON pour spécifier les valeurs susceptibles de changer par rapport à run-to-run. Par exemple, si vos Chef livres de recettes configurent une application tierce qui accepte les paiements, vous pouvez utiliser le paramètre personnalisé JSON pour spécifier le point de terminaison URL de paiement.

Spécification des attributs en mode brut JSON

Voici un exemple du format que vous pouvez utiliser pour spécifier des JSON attributs personnalisés pour votre Chef recette.

{"filepath":"/tmp/example.txt", "content":"Hello, World!"}
Spécification d'un chemin d'accès à un JSON fichier

Voici un exemple du format que vous pouvez utiliser pour spécifier le chemin d'accès aux JSON attributs personnalisés de votre Chef recette.

{"sourceType":"s3", "sourceInfo":"someS3URL1"}, {"sourceType":"s3", "sourceInfo":"someS3URL2"}

Utiliser Git comme source de livre de recettes

Le AWS-ApplyChefRecipes document utilise le downloadContent plugin aws : pour télécharger des Chef livres de recettes. Pour télécharger du contenu depuis Git, spécifiez les informations relatives à votre dépôt Git JSON au format indiqué dans l'exemple suivant. Remplacez chacun example-resource-placeholder avec vos propres informations.

{ "repository":"GitCookbookRepository", "privateSSHKey":"{{ssm-secure:ssh-key-secure-string-parameter}}", "skipHostKeyChecking":"false", "getOptions":"branch:refs/head/main", "username":"{{ssm-secure:username-secure-string-parameter}}", "password":"{{ssm-secure:password-secure-string-parameter}}" }

Utiliser GitHub comme source de livre de recettes

Le AWS-ApplyChefRecipes document utilise le downloadContent plugin aws : pour télécharger des livres de recettes. Pour télécharger du contenu depuisGitHub, spécifiez les informations relatives à votre GitHub référentiel JSON au format indiqué dans l'exemple suivant. Remplacez chacun example-resource-placeholder avec vos propres informations.

{ "owner":"TestUser", "repository":"GitHubCookbookRepository", "path":"cookbooks/HelloWorld", "getOptions":"branch:refs/head/main", "tokenInfo":"{{ssm-secure:token-secure-string-parameter}}" }

Utiliser HTTP comme source de livre de recettes

Vous pouvez stocker les Chef livres de recettes dans un HTTP emplacement personnalisé sous forme de tar.gz fichier unique .zip ou de structure de répertoire. Pour télécharger du contenu depuisHTTP, spécifiez le chemin d'accès au fichier ou au répertoire JSON au format indiqué dans l'exemple suivant. Remplacez chacun example-resource-placeholder avec vos propres informations.

{ "url":"https://my.website.com/chef-cookbooks/HelloWorld.zip", "allowInsecureDownload":"false", "authMethod":"Basic", "username":"{{ssm-secure:username-secure-string-parameter}}", "password":"{{ssm-secure:password-secure-string-parameter}}" }

Utiliser Amazon S3 comme source de livre de recettes

Vous pouvez également stocker et télécharger Chef des livres de recettes dans Amazon S3 sous forme de tar.gz fichier unique .zip ou de structure de répertoire. Pour télécharger du contenu depuis Amazon S3, spécifiez le chemin d'accès au fichier JSON au format indiqué dans les exemples suivants. Remplacez chacun example-resource-placeholder avec vos propres informations.

Exemple 1 : Télécharger un livre de recettes spécifique

{ "path":"https://s3.amazonaws.com/chef-cookbooks/HelloWorld.zip" }

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

{ "path":"https://s3.amazonaws.com/chef-cookbooks-test/HelloWorld" }
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é conformément à la AmazonS3ReadOnlyAccess politique. Pour plus d'informations, consultez Configurer les autorisations d'instance requises pour Systems Manager.

Création d'une association qui exécute Chef des recettes (console)

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

  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.

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

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

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

  6. Dans Paramètres, pour Type de source, sélectionnez Git GitHub, HTTP, ou S3.

  7. Pour Informations sur la source, entrez les informations sur la source du livre de recettes en utilisant le format approprié pour le Type de source que vous avez sélectionné à l'étape 6. Pour plus d’informations, consultez les rubriques suivantes :

  8. Dans la Run list (Liste d'exécution), listez les recettes que vous souhaitez exécuter au format suivant, en séparant chaque recette par une virgule comme indiqué. N'ajoutez pas d'espace après la virgule. Remplacez chacun example-resource-placeholder avec vos propres informations.

    recipe[cookbook-name1::recipe-name],recipe[cookbook-name2::recipe-name]
  9. (Facultatif) Spécifiez JSON les attributs personnalisés que vous souhaitez que le Chef client transmette à vos nœuds cibles.

    1. Dans le contenu des JSON attributs, ajoutez les attributs que vous souhaitez que le Chef client transmette à vos nœuds cibles.

    2. Dans JSONles sources d'attributs, ajoutez les chemins d'accès aux attributs que vous souhaitez que le Chef client transmette à vos nœuds cibles.

    Pour de plus amples informations, veuillez consulter Appliquer JSON des attributs aux cibles lors de l'exécution d'une recette.

  10. Pour la version Chef client, spécifiez une Chef version. Les valeurs valides vont de 11 à 18 ou None. Si vous spécifiez un nombre compris entre 11 18 (inclus), Systems Manager installe la bonne version du Chef client sur vos nœuds cibles. Si vous le spécifiezNone, Systems Manager n'installe pas le Chef client sur les nœuds cibles avant d'avoir exécuté les recettes du document.

  11. (Facultatif) Pour les arguments Chef client, spécifiez des arguments supplémentaires pris en charge pour la version que Chef vous utilisez. Pour en savoir plus sur les arguments pris en charge, exécutez chef-client -h sur un nœud qui exécute le Chef client.

  12. (Facultatif) Activez Why-run pour afficher les modifications qui seront apportées aux nœuds cibles si les recettes sont exécutées, sans modifier réellement les nœuds cibles.

  13. Pour Compliance severity (Sévérité de conformité), sélectionnez la sévérité des résultats de conformité de la configuration Systems Manager que vous voulez rapportés. 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. Les rapports de conformité de la configuration sont stockés dans un comp)artiment S3 que vous spécifiez comme valeur du paramètre de Compliance report bucket (Compartiment de rapport de conformité (étape 14). Pour de plus amples informations sur la conformité, consultez En savoir plus sur la conformité dans ce guide.

    Les scans de conformité mesurent le décalage entre la configuration spécifiée dans vos Chef recettes et les ressources des nœuds. Les valeurs valables sont Critical, High, Medium, Low Informational Unspecified ou None. Pour ignorer les rapports de conformité, sélectionnez None.

  14. Pour Compliance type (Type de conformité), spécifiez le type de conformité pour lequel vous souhaitez que les résultats soient rapportés. Les valeurs valides concernent Association les State Manager associations, ou Custom:custom-type. La valeur par défaut estCustom:Chef.

  15. Pour Compliance report bucket, entrez le nom d'un bucket S3 dans lequel seront stockées les informations relatives à chaque Chef exécution effectuée par ce document, y compris la configuration des ressources et les résultats de conformité.

  16. Dans 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 Comprendre les objectifs et les contrôles de taux dans State Manager les associations.

    Dans Concurrency (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 Error threshold (Seuil d'erreur), 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.

  17. (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 permettent 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'IAMutilisateur effectuant cette tâche. Pour plus d'informations, consultez Configurer les autorisations d'instance requises pour Systems Manager ou Créer un rôle de IAM service 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 IAM service associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

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

Créez une association qui exécute Chef des recettes (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 les livres de recettes Chef à l'aide du AWS-ApplyChefRecipes document.

  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 Chef des livres de recettes sur les nœuds cibles dotés des balises spécifiées. Utilisez la commande adaptée au type de source de votre livre de cuisine et à votre système d'exploitation. Remplacez chacun example-resource-placeholder avec vos propres informations.

    1. Source Git

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"

    2. GitHub source

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"

      Voici un exemple.

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:OS,Values=Linux \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \ --association-name "MyChefAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:OS,Values=Linux ^ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^ --association-name "MyChefAssociation" ^ --schedule-expression "cron(0 2 ? * SUN *)"
    3. HTTPsource

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"
    4. Source Amazon S3

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

      Voici un exemple.

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets "Key=tag:OS,Values= Linux" \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \ --association-name "name" \ --schedule-expression "cron(0 2 ? * SUN *)"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets "Key=tag:OS,Values= Linux" ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^ --association-name "name" ^ --schedule-expression "cron(0 2 ? * SUN *)"

      Le système crée l'association et, à moins que votre expression cron ou rate spécifiée ne l'empêche, le système exécute l'association sur les nœuds cibles.

      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.

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

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

Affichage des détails de conformité des ressources Chef

Systems Manager capture les informations de conformité relatives aux ressources Chef gérées dans la valeur du compartiment du rapport de conformité Amazon S3 que vous avez spécifiée lors de l'exécution du AWS-ApplyChefRecipes document. La recherche d'informations sur les défaillances de Chef ressources dans un compartiment S3 peut prendre beaucoup de temps. Au lieu de cela, vous pouvez consulter ces informations sur la page Compliance (Conformité) de Systems Manager.

Une analyse de conformité de Systems Manager collecte des informations sur les ressources de vos nœuds gérés qui ont été créées ou vérifiées lors de la dernière Chef exécution. Les ressources peuvent inclure des fichiers, des répertoires, des services systemd, des packages yum, des fichiers modélisés, des packages gem et des livres de recettes dépendants, entre autres.

La section Récapitulatif des ressources de conformité affiche le nombre de ressources qui ont échoué. Dans l'exemple suivant, il ComplianceTypes'agit de Custom : Chef et une ressource n'est pas conforme.

Note

Custom:Chefest la ComplianceTypevaleur par défaut du AWS-ApplyChefRecipes document. Cette valeur est personnalisable.

Affichage de comptages dans la section Compliance resources summary (Récapitulatif des ressources de conformité) de la page Compliance (Conformité).

La section Présentation détaillée des ressources contient des informations sur la AWS ressource qui n'est pas conforme. Cette section inclut également le type de Chef ressource par rapport auquel la conformité a été exécutée, la gravité du problème, l'état de conformité et des liens vers des informations supplémentaires, le cas échéant.

Afficher les détails de conformité en cas de défaillance d'une ressource Chef gérée

Le lien Afficher la sortie affiche les 4 000 derniers caractères du statut détaillé. Systems Manager commence par l'exception comme premier élément, recherche les messages détaillés et les affiche jusqu'à ce qu'il atteigne le quota de 4 000 caractères. Ce processus affiche les messages de journal qui ont été générés avant que l'exception soit déclenchée, qui sont les plus pertinents pour la résolution.

Pour de plus amples informations sur la façon d'afficher les informations de conformité, consultez Conformité d'AWS Systems Manager.

Important

Si l'association State Manager échoue, aucune donnée de conformité n'est présentée. Par exemple, si Systems Manager tente de télécharger un Chef livre de recettes depuis un compartiment S3 auquel le nœud n'est pas autorisé à accéder, l'association échoue et Systems Manager ne fournit aucune donnée de conformité.