

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 15 : Mettre à jour le livre de recettes pour utiliser la logique conditionnelle
<a name="gettingstarted-cookbooks-conditional-logic"></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 maintenant à jour votre livre de recettes en ajoutant une recette qui utilise la *logique conditionnelle*, technique qui n'exécute le code que si certaines conditions sont réunies. Pour plus d'informations, consultez [Instructions if](https://docs.chef.io/dsl_recipe.html#if-statements) et [Instructions case](https://docs.chef.io/dsl_recipe.html#case-statements).

Cette recette se compose de deux actions basées sur le contenu des conteneurs de données : affiche un message dans le journal identifiant le système d'exploitation sur lequel l'instance s'exécute et, uniquement si le système d'exploitation est Linux, installe un package en utilisant le gestionnaire de package approprié pour la distribution Linux donnée. Ce package est appelé tree (arborescence) ; il s'agit d'une simple application pour visualiser les listes de répertoire.

**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` de `opsworks_cookbook_demo directory`, créez un fichier nommé `conditional_logic.rb` qui contient le code suivant :

   ```
   instance = search("aws_opsworks_instance").first
   os = instance["os"]
   
   if os == "Red Hat Enterprise Linux 7"
     Chef::Log.info("********** Operating system is Red Hat Enterprise Linux. **********")
   elsif os == "Ubuntu 14.04 LTS" || os == "Ubuntu 16.04 LTS" || os == "Ubuntu 18.04 LTS"
     Chef::Log.info("********** Operating system is Ubuntu. **********") 
   elsif os == "Microsoft Windows Server 2012 R2 Base"
     Chef::Log.info("********** Operating system is Windows. **********")
   elsif os == "Amazon Linux 2015.03" || os == "Amazon Linux 2015.09" || os == "Amazon Linux 2016.03" || os == "Amazon Linux 2016.09" || os == "Amazon Linux 2017.03" || os == "Amazon Linux 2017.09" || os == "Amazon Linux 2018.03" || os == "Amazon Linux 2"
     Chef::Log.info("********** Operating system is Amazon Linux. **********")
   elsif os == "CentOS Linux 7"
     Chef::Log.info("********** Operating system is CentOS 7. **********")
   else
     Chef::Log.info("********** Cannot determine operating system. **********")
   end
   
   case os
   when "Ubuntu 14.04 LTS", "Ubuntu 16.04 LTS", "Ubuntu 18.04 LTS"
     apt_package "Install a package with apt-get" do
       package_name "tree"
     end
   when "Amazon Linux 2015.03", "Amazon Linux 2015.09", "Amazon Linux 2016.03", "Amazon Linux 2016.09", "Amazon Linux 2017.03", "Amazon Linux 2017.09", "Amazon Linux 2018.03", "Amazon Linux 2", "Red Hat Enterprise Linux 7", "CentOS Linux 7"
     yum_package "Install a package with yum" do
       package_name "tree"
     end
   else
     Chef::Log.info("********** Cannot determine operating system type, or operating system is not Linux. Package not installed. **********")
   end
   ```

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::conditional\$1logic**. 

**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 et recherchez une entrée qui ressemble à ce qui suit :

   ```
   [2015-11-16T19:59:05+00:00] INFO: ********** Operating system is Amazon Linux. **********
   ```

   Le système d'exploitation de l'instance étant Amazon Linux 2016.09, seule l'entrée précédente (des cinq entrées possibles dans le code de la recette) sera affichée dans le journal. 

1. Si le système d'exploitation est Linux, la recette installe le package tree. Pour visualiser le contenu d'un répertoire, tapez **tree** à l'invite de commande depuis le répertoire souhaité ou avec le chemin d'accès du répertoire souhaité (par exemple, `tree /var/chef/runs`).

Dans l'[étape suivante](gettingstarted-cookbooks-community-cookbooks.md), vous allez mettre à jour le livre de recettes pour utiliser les fonctionnalités à partir d'un livre de recettes externe fourni par la communauté Chef.