

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

# Usar a pesquisa em uma pilha do Linux
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-linux"></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).

Este exemplo é baseado em uma pilha do Linux com um único servidor de aplicativo PHP. Ele usa uma pesquisa do Chef para obter o endereço IP público do servidor e coloca o endereço em um arquivo no diretório `/tmp`. Ele recupera basicamente as mesmas informações do objeto de nó como em [Obter valores de atributo diretamente](cookbooks-101-opsworks-opsworks-stack-config-node.md), mas o código é muito mais simples e não depende dos detalhes da estrutura de atributos de implantação e configuração de pilha.

As instruções a seguir resumem o procedimento para criar a pilha neste exemplo. Para obter mais informações, consulte [Criar uma nova pilha](workingstacks-creating.md).

**nota**  
Se você ainda não executou uma receita personalizada em uma instância do OpsWorks Stacks, primeiro veja o [Executar uma receita em uma instância Linux](cookbooks-101-opsworks-opsworks-instance.md) exemplo.

**Criar uma pilha**

1. Abra o [console do OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) e clique em **Add Stack (Adicionar pilha)**.

1. Especifique as seguintes configurações, aceite os padrões para as outras configurações e clique em **Add Stack**.
   + **Nome**: SearchJSON
   + **Chave SSH padrão** — um par de EC2 chaves da Amazon

   Se você precisar criar um par de EC2 chaves da Amazon, consulte [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). Observe que o par de chaves deve pertencer a mesma região da AWS que a instância. O exemplo usa a região Oeste dos EUA (Oregon).

1. Clique em **Adicionar uma a camada** e [adicione uma camada do PHP App Server](workinglayers-custom.md) à pilha com configurações padrão.

1. [Adicione uma instância ininterrupta](workinginstances-add.md) com as configurações padrão à camada e [inicie-a](workinginstances-starting.md).

**Para configurar o livro de receitas**

1. Crie um diretório em `opsworks_cookbooks` chamado `searchjson` e navegue até ele.

1. Crie um arquivo `metadata.rb` com o seguinte conteúdo e salve-o em `opstest`.

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

1. Criar um diretório `recipes` em `searchjson`.

1. Crie um arquivo `default.rb` com a seguinte receita e salve-o no diretório `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
   ```

   As pilhas do Linux oferecem suporte somente ao índice de pesquisa `node`. A receita usa esse índice para obter uma lista de instâncias na camada `php-app`. Como a layer tem somente uma instância, a receita atribui a primeira a `phpserver`. Se a camada tiver várias instâncias, você poderá enumerá-las para recuperar as informações necessárias. Cada item da lista é uma tabela de hash contendo um conjunto de atributos de instância. O atributo `ip` é definido como o endereço IP público da instância, então, você pode representar o endereço no código de receita subsequente como `phpserver[:ip]`.

   Depois de adicionar uma mensagem ao log do Chef, a receita usa um recurso [https://docs.chef.io/chef/resources.html#file](https://docs.chef.io/chef/resources.html#file) para criar um arquivo denominado `ip_addresses`. O atributo `content` é definido como uma representação de string `phpserver[:ip]`. Quando o Chef cria `ip_addresses`, ele adiciona essa string ao arquivo.

1. Crie um arquivo `.zip` de `opsworks_cookbooks`, [faça upload do arquivo em um bucket do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [torne o arquivo público](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html) e registre o URL do arquivo. Para obter mais informações sobre repositórios de livros de receitas, consulte [Repositórios de livro de receitas](workingcookbook-installingcustom-repo.md).

   O conteúdo entregue aos buckets do Amazon S3 pode conter conteúdo do cliente. Para obter mais informações sobre a remoção de dados confidenciais, consulte [Como faço para esvaziar um bucket do S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) ou [Como faço para excluir um bucket do S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html).

Agora você pode instalar o livro de receitas e executar a receita.

**Para executar a receita**

1. [Edite a pilha para habilitar livros de receitas personalizados](workingcookbook-installingcustom-enable.md), e especifique as seguintes configurações.
   + **Tipo de repositório**: ** Arquivamento HTTP**
   + **URL do repositório**: o URL do arquivo do livro de receitas que você registrou anteriormente

   Use os valores padrão nas outras configurações e clique em **Save** para atualizar a configuração da pilha.

1. Edite a configuração da camada personalizada e [`searchjson::default`atribua](workingcookbook-assigningcustom.md) ao evento de configuração da camada. OpsWorks As pilhas executarão a receita após a inicialização da instância ou se você acionar explicitamente o evento de configuração.

1. [Execute o comando de pilha Update Custom Cookbooks](workingstacks-commands.md), que instala a versão atual de seu repositório de livro de receitas personalizado nas instâncias da pilha. Se uma versão mais antiga do repositório estiver presente, esse comando a substituirá.

1. Execute a receita executando o comando de pilha **Setup**, que aciona um evento Setup na instância e executa `searchjson::default`. Deixe a **Running command setup page** aberta.

Após a execução com êxito da receita, você pode verificá-la.

**Para verificar searchjson**

1. A primeira etapa é examinar no [log do Chef](troubleshoot-debug-log.md) o evento Setup mais recente. Na **Running command setup page**, clique em **show** na coluna **Log** da instância php-app1 para exibir o log. Role para baixo até localizar sua mensagem de log, geralmente na metade do arquivo, que será semelhante à seguinte.

   ```
   ...
   [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. [Use SSH fazer login na instância](workinginstances-ssh.md) e liste o conteúdo de `/tmp`, que deve incluir um arquivo chamado `ip_addresses` que contém o endereço IP.