

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 15: atualizar o livro de receitas para usar lógica condicional
<a name="gettingstarted-cookbooks-conditional-logic"></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).

Agora, atualize seu livro de receitas adicionando uma receita que usa a *lógica condicional*, uma técnica que executa o código somente se determinadas condições forem atendidas. Para obter mais informações, acesse [Declarações com "if"](https://docs.chef.io/dsl_recipe.html#if-statements) e [Declarações com "case"](https://docs.chef.io/dsl_recipe.html#case-statements).

Essa receita faz duas coisas com base no conteúdo do data bag: exibe uma mensagem no registro para identificar o sistema operacional em que a instância está sendo executada e, somente se o sistema operacional for Linux, instala um pacote usando o gerenciador de pacote correto para a determinada distribuição do Linux. Esse pacote é chamado árvore; é um simples aplicativo para visualizar listas de diretórios.

**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`, em `opsworks_cookbook_demo directory`, crie um arquivo chamado `conditional_logic.rb` que contenha o seguinte código:

   ```
   instance = search("aws_opsworks_instance").first
   os = instance["os"]
   
   if os == "Red Hat Enterprise Linux 7"
     Chef::Log.info("********** Operating system is Red Hat Enterprise Linux. **********")
   elsif os == "Ubuntu 14.04 LTS" || os == "Ubuntu 16.04 LTS" || os == "Ubuntu 18.04 LTS"
     Chef::Log.info("********** Operating system is Ubuntu. **********") 
   elsif os == "Microsoft Windows Server 2012 R2 Base"
     Chef::Log.info("********** Operating system is Windows. **********")
   elsif os == "Amazon Linux 2015.03" || os == "Amazon Linux 2015.09" || os == "Amazon Linux 2016.03" || os == "Amazon Linux 2016.09" || os == "Amazon Linux 2017.03" || os == "Amazon Linux 2017.09" || os == "Amazon Linux 2018.03" || os == "Amazon Linux 2"
     Chef::Log.info("********** Operating system is Amazon Linux. **********")
   elsif os == "CentOS Linux 7"
     Chef::Log.info("********** Operating system is CentOS 7. **********")
   else
     Chef::Log.info("********** Cannot determine operating system. **********")
   end
   
   case os
   when "Ubuntu 14.04 LTS", "Ubuntu 16.04 LTS", "Ubuntu 18.04 LTS"
     apt_package "Install a package with apt-get" do
       package_name "tree"
     end
   when "Amazon Linux 2015.03", "Amazon Linux 2015.09", "Amazon Linux 2016.03", "Amazon Linux 2016.09", "Amazon Linux 2017.03", "Amazon Linux 2017.09", "Amazon Linux 2018.03", "Amazon Linux 2", "Red Hat Enterprise Linux 7", "CentOS Linux 7"
     yum_package "Install a package with yum" do
       package_name "tree"
     end
   else
     Chef::Log.info("********** Cannot determine operating system type, or operating system is not Linux. Package not installed. **********")
   end
   ```

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::conditional\$1logic**. 

**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 ao longo do registro e encontre uma entrada semelhante à seguinte:

   ```
   [2015-11-16T19:59:05+00:00] INFO: ********** Operating system is Amazon Linux. **********
   ```

   Como o sistema operacional da instância é Amazon Linux 2016.09, somente a entrada anterior (das cinco possíveis entradas no código de receitas) será exibida no registro. 

1. Se o sistema operacional for Linux, a receita instalará o pacote árvore. Para visualizar o conteúdo de um diretório, digite **tree** no prompt de comando a partir do diretório desejado ou com o caminho do diretório desejado (por exemplo, `tree /var/chef/runs`).

Na [próxima etapa](gettingstarted-cookbooks-community-cookbooks.md), você atualizará o livro de receitas para usar a funcionalidade a partir de um livro de receitas externo fornecido pela comunidade Chef.