

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à.

# Fase 14. Aggiornamento del libro di ricette per l'utilizzo dell'iterazione
<a name="gettingstarted-cookbooks-iteration"></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).

Puoi aggiornare il libro di ricette aggiungendo una ricetta che utilizza l'*iterazione*, una tecnica che ripete il codice della ricetta più volte. Questa ricetta visualizza i messaggi nel log per un contenitore di dati contenente più contenuti. 

**Per aggiornare il libro di ricette nell'istanza ed eseguire la nuova ricetta**

1. Nella workstation locale, nella sottodirectory `recipes` della directory `opsworks_cookbook_demo` creare un file denominato `iteration_demo.rb` contenente il seguente codice:

   ```
   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
   ```
**Nota**  
La scrittura del codice della ricetta precedente è un'operazione più breve, più flessibile e meno soggetta a errori rispetto alla scrittura del seguente codice della ricetta che non utilizza l'iterazione:  

   ```
   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. Al terminale o al prompt dei comandi, utilizzare il comando **tar** per creare una nuova versione del file `opsworks_cookbook_demo.tar.gz`, che contiene la directory `opsworks_cookbook_demo` e il relativo contenuto aggiornato.

1. Caricare il file `opsworks_cookbook_demo.tar.gz` aggiornato nel bucket S3.

1. Seguire la procedura descritta nella [Fase 5. Aggiornamento del libro di ricette nell'istanza ed esecuzione della ricetta](gettingstarted-cookbooks-copy-cookbook.md) per aggiornare il libro di ricette nell'istanza e per eseguire la ricetta. Nella procedura illustrata nella sezione "Per eseguire la ricetta", in **Recipes to execute (Ricette da eseguire)**, digitare **opsworks\$1cookbook\$1demo::iteration\$1demo**. 

**Per testare la ricetta**

1. Con la **pagina di esecuzione del comando execute\$1recipes** visualizzata dalle precedenti procedure, in **cookbooks-demo1**, in **Log**, scegliere **show (mostra)**. Viene visualizzata la **pagina del log del comando execute\$1recipes**.

1. Scorrere il log verso il basso e trovare le voci simili alle seguenti:

   ```
   [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]' **********
   ```

   Questa ricetta visualizza i messaggi nel log per un contenitore di dati contenente più contenuti. L'elemento del contenitore di dati è incluso nel contenitore di dati `aws_opsworks_stack`. L'elemento del contenitore di dati include un contenuto denominato `custom_cookbooks_source`. All'interno di questo contenuto sono disponibili sei contenuti denominati `type`, `url`, `username`, `password`, `ssh_key`, e `revision`. Vengono visualizzati anche i relativi valori.

Nella [fase successiva](gettingstarted-cookbooks-conditional-logic.md) aggiornerai il libro di ricette per l'esecuzione del codice della ricetta solo se vengono soddisfatte determinate condizioni.