

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo della ricerca su uno stack Linux
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-linux"></a>

**Importante**  
Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Questo esempio si basa su uno stack Linux con un unico server di applicazioni PHP. Utilizza la ricerca di Chef per ottenere l'indirizzo IP pubblico del server e inserisce l'indirizzo in un file nella directory `/tmp`. Recupera essenzialmente le stesse informazioni dall'oggetto nodo di [Ottenimento diretto dei valori degli attributi](cookbooks-101-opsworks-opsworks-stack-config-node.md), ma il codice è molto più semplice e non dipende dai dettagli della struttura degli attributi di configurazione e distribuzione dello stack.

Di seguito viene brevemente descritto come creare lo stack per questo esempio. Per ulteriori informazioni, consulta [Creare un nuovo stack](workingstacks-creating.md).

**Nota**  
Se non hai mai eseguito una ricetta personalizzata su un'istanza OpsWorks Stacks, dovresti prima seguire l'esempio. [Esecuzione di una ricetta su un'istanza Linux](cookbooks-101-opsworks-opsworks-instance.md)

**Creare uno stack**

1. Aprire la [console OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) e fare clic su **Add Stack (Aggiungi stack)**.

1. Specificare le impostazioni seguenti, accettare i valori predefiniti di altre impostazioni e fare clic su **Add Stack (Aggiungi stack)**.
   + **Nome: searchJSON**
   + **Chiave SSH predefinita**: una coppia di EC2 chiavi Amazon

   Se devi creare una coppia di EC2 chiavi Amazon, consulta [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). La coppia di chiavi deve appartenere alla stessa regione AWS dell'istanza. L'esempio utilizza la regione Stati Uniti occidentali (Oregon).

1. Fai clic su **Aggiungi un livello** e [aggiungi un livello PHP App Server allo](workinglayers-custom.md) stack con le impostazioni predefinite.

1. [Aggiungere un'istanza 24/7](workinginstances-add.md) con impostazioni predefinite al livello e [avviarla](workinginstances-starting.md).

**Per configurare il libro di ricette**

1. Creare una directory in `opsworks_cookbooks` denominata `searchjson` e accedervi.

1. Creare un file `metadata.rb` con il seguente contenuto e salvarlo in `opstest`.

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

1. Creare una directory `recipes` in `searchjson`.

1. Creare un file `default.rb` con la seguente ricetta e salvarlo nella directory `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
   ```

   Gli stack Linux supportano solo l'indice di ricerca `node`. La ricetta utilizza questo indice per ottenere un elenco di istanze nel livello `php-app`. Poiché il livello è noto per avere una sola istanza, la ricetta assegna semplicemente la prima a `phpserver`. Se il livello ha più istanze, puoi enumerarle per recuperare le informazioni richieste. Ogni voce dell'elenco è una tabella hash contenente un set di attributi di istanza. L'attributo `ip` è impostato sull'indirizzo IP pubblico dell'istanza, pertanto puoi rappresentare tale indirizzo nel codice della ricetta successiva nella forma `phpserver[:ip]`.

   Dopo aver aggiunto un messaggio al log di Chef, la ricetta usa una risorsa [https://docs.chef.io/chef/resources.html#file](https://docs.chef.io/chef/resources.html#file) per creare un file denominato `ip_addresses`. L'attributo `content` è impostato su una rappresentazione di stringa di `phpserver[:ip]`. Quando Chef crea `ip_addresses`, aggiunge la stringa al file.

1. Crea un `.zip` archivio di`opsworks_cookbooks`, [carica l'archivio in un bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [rendi l'archivio pubblico](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html) e registra l'URL dell'archivio. Per ulteriori informazioni sui repository dei libri di ricette, consulta [Repository dei libri di ricette](workingcookbook-installingcustom-repo.md).

   I contenuti distribuiti ai bucket Amazon S3 potrebbero contenere informazioni dei clienti. Per ulteriori informazioni sulla rimozione di dati sensibili, vedi [Come svuotare un bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) o [Come eliminare un bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html).

Adesso puoi installare il libro di ricette ed eseguire la ricetta.

**Per eseguire la ricetta**

1. [Modificare lo stack per abilitare i libri di ricette personalizzati](workingcookbook-installingcustom-enable.md) e specificare le impostazioni seguenti.
   + **Tipo di repository****: Http Archive**
   + URL del **repository: l'URL** dell'archivio del libro di cucina che hai registrato in precedenza

   Utilizzare i valori predefiniti per altre impostazioni e fare clic su **Save (Salva)** per aggiornare la configurazione dello stack.

1. Modifica la configurazione personalizzata del livello e [assegnala `searchjson::default` all'evento Setup](workingcookbook-assigningcustom.md) del livello. OpsWorks Stacks eseguirà la ricetta dopo l'avvio dell'istanza o se attivi esplicitamente l'evento Setup.

1. [Eseguire il comando dello stack Update Custom Cookbooks (Aggiorna libri di ricette personalizzati)](workingstacks-commands.md), che installa la versione corrente del repository dei libri di ricette personalizzati nelle istanze dello stack. Se è presente una versione precedente del repository, verrà sovrascritta da questo comando.

1. Eseguire la ricetta utilizzando il comando dello stack **Setup (Installazione)**, che attiva un evento Setup sull'istanza ed esegue `searchjson::default`. Lasciare aperta la pagina **Running command setup (Esecuzione configurazione comando)**.

Dopo aver eseguito correttamente la ricetta, puoi verificarla.

**Per verificare searchjson**

1. Il primo passo è esaminare il [log di Chef](troubleshoot-debug-log.md) per l'evento Setup più recente. Nella **pagina di configurazione dell'esecuzione del comando**, fare clic su **show (mostra)** nella colonna **Log** dell'istanza php-app1 per visualizzare il log. Scorrere verso il basso per trovare il messaggio di log verso la metà. Sarà simile al seguente.

   ```
   ...
   [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. [Utilizzare SSH per accedere all'istanza](workinginstances-ssh.md) ed elencare i contenuti di `/tmp`, che dovrebbero includere un file denominato `ip_addresses` contenente l'indirizzo IP.