

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.

# Exemple 1 : Installation des packages
<a name="cookbooks-101-basics-packages"></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.

L'installation des packages est l'une des utilisations plus courantes des recettes et peut être très simple, selon le package. Par exemple, la recette suivante installe Git sur un système Linux.

```
package 'git' do
  action :install
end
```

La [ressource `package`](https://docs.chef.io/chef/resources.html#package) gère l'installation des packages. Pour cet exemple, vous n'avez pas besoin de spécifier d'attributs. Le nom de la ressource est la valeur par défaut pour l'attribut `package_name`, qui identifie le package. L'action `install` demande au fournisseur d'installer le package. Vous pouvez rendre le code encore plus simple en ignorant `install` ; c'est l'action par défaut de la ressource `package` action par défaut de la ressource. Lorsque vous exécutez la recette, le Chef utilise le fournisseur approprié pour installer le package. Sur le système Ubuntu que vous utiliserez pour l'exemple, le fournisseur installe Git en appelant `apt-get`.

**Note**  
L'installation de logiciels sur un système Windows nécessite une procédure légèrement différente. Pour de plus amples informations, veuillez consulter [Installation de logiciels Windows](cookbooks-101-opsworks-install-software.md).

Pour utiliser Test Kitchen afin d'exécuter cette recette dans Vagrant, vous devez d'abord configurer un livre de recettes, puis initialiser et configurer Test Kitchen. La procédure suivante est destinée à un système Linux, mais elle est globalement similaire pour les systèmes Windows et Macintosh. Commencez par ouvrir une fenêtre de terminal ; tous les exemples dans ce chapitre utilisent les outils de ligne de commande.

**Pour préparer le livre de recettes**

1. Dans votre répertoire de base, créez un sous-répertoire nommé `opsworks_cookbooks` qui contiendra tous les livres de recettes de ce chapitre. Créez ensuite un sous-répertoire pour ce livre de recettes nommé `installpkg` et accédez à celui-ci.

1. Dans `installpkg`, créez un fichier nommé `metadata.rb` qui contient le code suivant.

   ```
   name "installpkg"
   version "0.1.0"
   ```

   Pour plus de simplicité, les exemples de ce chapitre spécifient simplement le nom et la version du livre de recettes, mais `metadata.rb` peut contenir diverses métadonnées de livre. Pour plus d'informations, consultez [À propos des métadonnées des livres de recettes](http://docs.chef.io/cookbook_repo.html#about-cookbook-metadata).
**Note**  
Veillez à créer `metadata.rb` avant d'initialiser Test Kitchen ; Il utilise les données pour créer le fichier de configuration par défaut.

1. Dans `installpkg`, exécutez `kitchen init`, qui initialise Test Kitchen et installe le pilote de Vagrant par défaut.

1. La commande `kitchen init` crée un fichier de configuration YAML dans `installpkg` nommé `.kitchen.yml`. Ouvrez le fichier dans votre éditeur de texte favori. Le fichier `.kitchen.yml` inclut une section `platforms` qui spécifie les systèmes sur lesquels vous devez exécuter les recettes. Test Kitchen crée une instance et exécute les recettes spécifiés sur chaque plateforme. 
**Note**  
Par défaut, Test Kitchen exécute les recettes sur une plateforme à la fois. Si vous ajoutez un argument `-p` à n'importe quelle commande qui crée une instance, Test Kitchen exécutera les recettes sur toutes les plateformes, en parallèle.

   Une seule plateforme est suffisante pour cet exemple, vous devez donc modifier `.kitchen.yml` de façon à supprimer la plateforme `centos-6.4`. La structure de votre fichier `.kitchen.yml` devrait maintenant ressembler à ceci :

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: default
       run_list:
         - recipe[installpkg::default]
       attributes:
   ```

   Test Kitchen exécute uniquement les recettes qui sont dans la liste d'exécution de `.kitchen.yml`. Vous identifiez les recettes en utilisant le `[cookbook_name::recipe_name]` format, où l'`.rb`extension est *recipe\$1name* omise. Au début, la liste d'exécution de `.kitchen.yml` contient la recette par défaut du livre de recettes, `installpkg::default`. C'est la recette que vous allez implémenter, c'est pourquoi vous n'avez pas besoin de modifier la liste d'exécution.

1. Créez un sous-répertoire de `installpkg` nommé `recipes`.

   Si un livre de recettes contient des recettes, comme la plupart d'entre elles, elles doivent se trouver dans le sous-répertoire. `recipes`

Vous pouvez désormais ajouter la recette au livre de recettes et utiliser Test Kitchen pour l'exécuter sur une instance.

**Pour exécuter la recette**

1. Créez un fichier nommé `default.rb` qui contient le code d'exemple de l'installation de Git dès le début de la section et l'enregistrer dans le sous-répertoire `recipes`.

1. Dans le répertoire `installpkg`, exécutez `kitchen converge`. Cette commande démarre une nouvelle instance Ubuntu dans Vagrant, copie vos livres de recettes sur l'instance et lance une exécution Chef pour exécuter les recettes de la liste d'exécutions. `.kitchen.yml`

1. Pour vérifier que la recette a réussi, exécutez `kitchen login`, qui ouvre une connexion SSH à l'instance. Exécutez ensuite `git --version` pour vérifier que Git a été installé correctement. Pour revenir à votre poste de travail, exécutez `exit`.

1. Lorsque vous avez terminé, exécutez `kitchen destroy` pour arrêter l'instance. L'exemple suivant utilise un autre livre de recettes.

Cet exemple était un bon moyen de démarrer, mais il est particulièrement simple. D'autres packages peuvent être plus complexes à installer ; vous devrez peut-être faire tout ou partie des éléments suivants :
+ Créez et configurez un utilisateur.
+ Créez un ou plusieurs répertoires pour les données, les journaux, etc.
+ Installez un ou plusieurs fichiers de configuration.
+ Spécifiez des valeurs de nom ou d'attribut de package différentes selon les systèmes d'exploitation.
+ Démarrez un service, puis redémarrez-le en fonction des besoins.

Les exemples suivants expliquent comment résoudre ces problèmes, ainsi que d'autres opérations utiles.