

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.

# Utilisation de la recherche sur une pile Linux
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-linux"></a>

**Important**  
Le AWS OpsWorks Stacks service a pris fin 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.

Cet exemple repose sur une pile Linux avec un seul serveur d'application PHP. Il utilise la fonctionnalité de recherche de Chef afin d'obtenir l'adresse IP publique du serveur et met l'adresse dans un fichier du répertoire `/tmp`. Il récupère essentiellement les mêmes informations de l'objet de nœud que [Obtention directe des valeurs d'attribut](cookbooks-101-opsworks-opsworks-stack-config-node.md), mais le code est beaucoup plus simple et ne dépend pas des détails de la structure d'attribut de la configuration et du déploiement de la pile.

Voici un bref résumé de la création de la pile pour cet exemple. Pour de plus amples informations, veuillez consulter [Créer une pile](workingstacks-creating.md).

**Note**  
Si vous n'avez jamais exécuté de recette personnalisée sur une instance OpsWorks Stacks auparavant, vous devez d'abord suivre l'[Exécution d'une recette sur une instance Linux](cookbooks-101-opsworks-opsworks-instance.md)exemple.

**Création d’une pile**

1. Ouvrez la [console OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) et cliquez sur **Add Stack (Ajouter une pile)**.

1. Spécifiez les paramètres suivants, acceptez les valeurs par défaut pour les autres paramètres et cliquez sur **Add Stack (Ajouter une pile)**.
   + **Nom** — SearchJSON
   + **Clé SSH par défaut** : une paire de EC2 clés Amazon

   Si vous devez créer une paire de EC2 clés Amazon, consultez [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). Notez que la paire de clés doit appartenir à la même région AWS que l'instance. L'exemple utilise la région de l'ouest des États-Unis (Oregon).

1. Cliquez sur **Ajouter une couche** et [ajoutez une couche PHP App Server](workinglayers-custom.md) à la pile avec les paramètres par défaut.

1. [Ajoutez une instance 24/7](workinginstances-add.md) avec les paramètres par défaut de la couche et [démarrez-la](workinginstances-starting.md).

**Pour configurer le livre de recettes**

1. Créez un répertoire dans `opsworks_cookbooks`, nommé `searchjson` et accédez à celui-ci.

1. Créez un fichier `metadata.rb` avec le contenu suivant et enregistrez-le sur `opstest`.

   ```
   name "searchjson"
   version "0.1.0"
   ```

1. Créez un répertoire `recipes` dans `searchjson`.

1. Créez un fichier `default.rb` avec la recette suivante et enregistrez-le dans le répertoire `recipes`.

   ```
   phpserver = search(:node, "layers:php-app").first
   Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********")
   
   file "/tmp/ip_addresses" do
     content "#{phpserver[:ip]}"
     mode 0644
     action :create
   end
   ```

   Les piles Linux prennent uniquement en charge l'index de recherche `node`. La recette utilise cet index pour obtenir une liste des instances dans la couche `php-app`. Etant donné que la couche est connue pour n'avoir qu'une seule instance, la recette attribue simplement la première à `phpserver`. Si la couche comporte plusieurs instances, vous pouvez les énumérer pour récupérer les informations requises. Chaque élément de la liste est une table de hachage qui contient un ensemble d'attributs d'instance. L'attribut `ip` est défini sur l'adresse IP publique de l'instance. Vous pouvez donc représenter cette adresse dans le code de recette suivant sous la forme `phpserver[:ip]`.

   Après avoir ajouté un message dans le journal de Chef, la recette utilise une ressource [https://docs.chef.io/chef/resources.html#file](https://docs.chef.io/chef/resources.html#file) pour créer un fichier nommé `ip_addresses`. L'attribut `content` est défini sur une représentation de chaîne de `phpserver[:ip]`. Lorsque Chef crée `ip_addresses`, il ajoute cette chaîne dans le fichier.

1. Créez une `.zip` archive de`opsworks_cookbooks`, [téléchargez-la dans un compartiment Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [rendez-la publique](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html) et enregistrez l'URL de l'archive. Pour plus d'informations sur les référentiels de livre de recettes, consultez [Référentiels de livres de recettes](workingcookbook-installingcustom-repo.md).

   Le contenu livré aux compartiments Amazon S3 peut contenir du contenu client. Pour plus d'informations sur la suppression de données sensibles, consultez [How Do I Empty an S3 Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) (Comment puis-je vider un compartiment S3 ?) ou [How Do I Delete an S3 Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) (Comment supprimer un compartiment S3 ?).

Vous pouvez maintenant installer le livre de recettes et exécuter la recette.

**Pour exécuter la recette**

1. [Modifiez la pile pour activer les livres personnalisés](workingcookbook-installingcustom-enable.md) et spécifiez les paramètres suivants.
   + **Type de référentiel** — **Http Archive**
   + **URL du référentiel : URL** de l'archive du livre de recettes que vous avez enregistrée précédemment

   Utilisez les valeurs par défaut pour les autres paramètres, puis cliquez sur **Save (Enregistrer)** pour mettre à jour la configuration de la pile.

1. Modifiez la configuration de couche personnalisée et [attribuez-la `searchjson::default`](workingcookbook-assigningcustom.md) à l'événement Setup de la couche. OpsWorks Stacks exécutera la recette après le démarrage de l'instance ou si vous déclenchez explicitement l'événement Setup.

1. [Exécutez la commande de pile de mise à jour des livres de recettes personnalisés](workingstacks-commands.md), qui installe la version actuelle de votre référentiel de livres de recettes personnalisé sur les instances de la pile. Si une version antérieure du référentiel est présente, cette commande la remplace.

1. Exécutez la recette en choisissant la commande de pile **Setup**, ce qui déclenche un événement Setup sur l'instance et exécute `searchjson::default`. Laissez la **page de configuration de l'exécution de la commande** ouverte.

Une fois que la recette a été exécutée correctement, vous pouvez la vérifier.

**Pour vérifier searchjson**

1. La première étape consiste à rechercher dans le [journal de Chef](troubleshoot-debug-log.md) l'événement Setup le plus récent. Sur la **page de configuration de l'exécution de la commande**, cliquez sur **show (afficher)** dans la colonne **Log (Journal)** de l'instance php-app1 pour afficher le journal. Faites défiler vers le bas pour trouver votre message de journal vers le milieu, comme illustré ci-après.

   ```
   ...
   [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ...
   [2014-09-05T17:08:41+00:00] WARN: Current  bash[logdir_existence_and_restart_apache2]: ...
   [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'**********
   [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1)
   ...
   ```

1. [Utilisez SSH pour vous connecter à l'instance](workinginstances-ssh.md) et affichez le contenu `/tmp`, qui doit inclure un fichier nommé `ip_addresses` contenant l'adresse IP.