

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.

# Étape 14 : Mettre à jour le livre de recettes pour utiliser l'itération
<a name="gettingstarted-cookbooks-iteration"></a>

**Important**  
Le AWS OpsWorks Stacks service a atteint sa fin de vie le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez l' AWS Support équipe sur [AWS Re:Post](https://repost.aws/) ou via le [AWS Support](https://aws.amazon.com/support) Premium.

Mettez à jour votre livre de recettes en ajoutant une recette qui utilise l'*itération*, technique qui répète le code de la recette plusieurs fois. Cette recette affiche les messages du journal relatifs à un élément de conteneur de données qui inclut un contenu multiple. 

**Pour mettre à jour le livre de recettes sur l'instance et exécuter la nouvelle recette**

1. Sur votre ordinateur local, dans le sous-répertoire `recipes` du répertoire `opsworks_cookbook_demo`, créez un fichier nommé `iteration_demo.rb` qui contient le code suivant :

   ```
   stack = search("aws_opsworks_stack").first
   Chef::Log.info("********** Content of 'custom_cookbooks_source' **********")
   
   stack["custom_cookbooks_source"].each do |content|
     Chef::Log.info("********** '#{content}' **********")
   end
   ```
**Note**  
L'écriture du code de recette précédent est plus courte, plus souple et plus fiable que l'écriture du code suivant qui n'utilise pas l'itération :  

   ```
   stack = search("aws_opsworks_stack").first
   Chef::Log.info("********** Content of 'custom_cookbooks_source' **********")
   
   Chef::Log::info("********** '[\"type\", \"#{stack['custom_cookbooks_source']['type']}\"]' **********")
   Chef::Log::info("********** '[\"url\", \"#{stack['custom_cookbooks_source']['url']}\"]' **********")
   Chef::Log::info("********** '[\"username\", \"#{stack['custom_cookbooks_source']['username']}\"]' **********")
   Chef::Log::info("********** '[\"password\", \"#{stack['custom_cookbooks_source']['password']}\"]' **********")
   Chef::Log::info("********** '[\"ssh_key\", \"#{stack['custom_cookbooks_source']['ssh_key']}\"]' **********")
   Chef::Log::info("********** '[\"revision\", \"#{stack['custom_cookbooks_source']['revision']}\"]' **********")
   ```

1. Depuis le terminal ou l'invite de commande, utilisez la commande **tar** pour créer une nouvelle version du fichier `opsworks_cookbook_demo.tar.gz`, qui contient le répertoire `opsworks_cookbook_demo` et son contenu chargé.

1. Chargez le fichier `opsworks_cookbook_demo.tar.gz` mis à jour dans votre compartiment S3.

1. Suivez les procédures décrites dans [Étape 5 : Mettre à jour le livre de recettes sur l'instance et exécuter la recette](gettingstarted-cookbooks-copy-cookbook.md) pour mettre à jour le livre de recettes sur l'instance et exécuter la recette. Dans la procédure « Pour exécuter la recette », pour **Recipes to execute (Recettes à exécuter)**, tapez **opsworks\$1cookbook\$1demo::iteration\$1demo**. 

**Pour tester la recette**

1. Avec la page **Running command execute\$1recipes (Exécution de la commande execute\$1recipes)** affichée à partir des procédures précédentes, pour **cookbooks-demo1**, pour **Log (Journal)**, choisissez **show (afficher)**. La page de journal **execute\$1recipes** s'affiche.

1. Faites défiler le journal pour trouver les entrées similaires aux entrées suivantes :

   ```
   [2015-11-16T19:56:56+00:00] INFO: ********** Content of 'custom_cookbooks_source' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["type", "s3"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["url", "https://s3.amazonaws.com/amzn-s3-demo-bucket/opsworks_cookbook_demo.tar.gz"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["username", "secret-key-value"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["password", "secret-access-key-value"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["ssh_key", nil]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["revision", nil]' **********
   ```

   Cette recette affiche les messages du journal relatifs à un élément de conteneur de données qui inclut un contenu multiple. L'élément de conteneur de données est dans le conteneur de données `aws_opsworks_stack`. L'élément de conteneur de données possède un contenu nommé `custom_cookbooks_source`. A l'intérieur de ce contenu figurent six contenus nommés `type`, `url`, `username`, `password`, `ssh_key` et `revision` ; leurs valeurs sont également affichées.

Dans l'[étape suivante](gettingstarted-cookbooks-conditional-logic.md), vous allez mettre à jour le livre de recettes pour n'exécuter le code de la recette que dans certaines conditions.