

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Etapa 14: atualizar o livro de receitas para usar iteração
<a name="gettingstarted-cookbooks-iteration"></a>

**Importante**  
O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no [AWS re:POST](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

Atualize seu livro de receitas adicionando um código que usa *iteração*, uma técnica que repete um código de receita várias vezes. Essa receita exibe mensagens no registro para um item do data bag que contém muitos conteúdos. 

**Para atualizar o livro de receitas na instância e executar a nova receita**

1. Na sua estação de trabalho local, no subdiretório `recipes`, no diretório `opsworks_cookbook_demo`, crie um arquivo chamado `iteration_demo.rb` que contenha o seguinte código:

   ```
   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**  
Gravar o código de receita anterior é um procedimento mais curto, mais flexível e menos propenso a erros do que escrever o seguinte código de receita que não usa iteração:  

   ```
   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. No terminal ou no prompt de comando, use o comando **tar** para criar uma nova versão do arquivo `opsworks_cookbook_demo.tar.gz`, que contém o diretório `opsworks_cookbook_demo` e o conteúdo atualizado.

1. Carregue o arquivo `opsworks_cookbook_demo.tar.gz` atualizado no bucket do S3.

1. Para atualizar o livro de receitas na instância e para executar a nova receita, siga as instruções em [Etapa 5: atualizar o livro de receitas na instância e executar a receita](gettingstarted-cookbooks-copy-cookbook.md). No processo "Para executar a receita", para **Recipes to execute (Receitas para executar)**, digite **opsworks\$1cookbook\$1demo::iteration\$1demo**. 

**Para testar a receita**

1. Com a página **Running command execute\$1recipes** sendo exibida a partir dos procedimentos anteriores, para **cookbooks-demo1** e **Log**, escolha **show**. A página de log **execute\$1recipes** é exibida.

1. Role para baixo no registro e encontre entradas semelhantes ao seguinte:

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

   Essa receita exibe mensagens no registro para um item do data bag que contém muitos conteúdos. O item do data bag está no data bag `aws_opsworks_stack`. O item do data bag tem conteúdo chamado `custom_cookbooks_source`. Dentro desse conteúdo existem seis conteúdos chamados `type`, `url`, `username`, `password`, `ssh_key` e `revision`, e seus valores também são exibidos.

Na [próxima etapa](gettingstarted-cookbooks-conditional-logic.md), você atualizará o livro de receitas para executar um código de receita somente se determinadas condições forem atendidas.