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
Importante
A ferramenta AWS OpsWorks Stacks o 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 o AWS Support Equipe em AWS Re:post
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"
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
-
Na sua estação de trabalho local, no subdiretório
recipes
, emopsworks_cookbook_demo directory
, crie um arquivo chamadoconditional_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
-
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órioopsworks_cookbook_demo
e o conteúdo atualizado. -
Carregue o arquivo
opsworks_cookbook_demo.tar.gz
atualizado no bucket do S3. -
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. No processo "Para executar a receita", para Recipes to execute (Receitas para executar), digite
opsworks_cookbook_demo::conditional_logic
.
Para testar a receita
-
Com a página Running command execute_recipes sendo exibida a partir dos procedimentos anteriores, para cookbooks-demo1 e Log, escolha show. A página de log execute_recipes é exibida.
-
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.
-
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, você atualizará o livro de receitas para usar a funcionalidade a partir de um livro de receitas externo fornecido pela comunidade Chef.