

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

# Obter valores de atributo diretamente
<a name="cookbooks-101-opsworks-opsworks-stack-config-node"></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).

**nota**  
Esta abordagem funciona apenas para pilhas do Linux.

[Simular os atributos de implantação e configuração de pilha no Vagrant](opsworks-opsworks-mock.md) mostra como obter dados de configuração e implantação de pilha usando a sintaxe de nó para fazer referência diretamente aos atributos específicos. Às vezes, essa é a melhor abordagem. No entanto, muitos atributos são definidos em coleções ou listas cujos conteúdos e nomes variam de uma pilha para outra e ao longo do tempo para uma determinada pilha. Por exemplo, o atributo `deploy` contém uma lista de atributos de aplicativo, que são designados com o nome abreviado do aplicativo. A lista, incluindo os nomes de atributos de aplicativo, geralmente varia de uma pilha para outra e até mesmo entre implantações. 

Geralmente, ela é útil e, às vezes, indispensável para obter os dados necessários ao enumerar atributos em uma lista ou uma coleção. Por exemplo, suponha que você queira saber os endereços IP públicos das instâncias de sua pilha. Essas informações estão no atributo `['opsworks']['layers']`, que é definido como uma tabela de hash que contém um elemento para cada uma das camadas da pilha, designadas com o nome abreviado da camada. Cada elemento da camada é definido como uma tabela de hash que contém os atributos da camada, um dos quais é `['instances']`. Esse elemento, por sua vez, é definido como outra tabela de hash que contém um atributo para cada uma das instâncias da camada, designada com o nome abreviado da instância. Cada atributo da instância é definido como outra tabela de hash que contém os atributos da instância, incluindo `['ip']`, que representa o endereço IP público. Se você estiver tendo problemas para visualizar isso, o procedimento a seguir inclui um exemplo no formato JSON.

Este exemplo mostra como obter os dados do JSON de configuração e implantação de pilha para as camadas de uma pilha.

**Para configurar o livro de receitas**

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

1. Inicialize e configure o Test Kitchen, conforme descrito em [Exemplo 1: Instalação de pacotes](cookbooks-101-basics-packages.md).

1. Adicione dois diretórios a `listip`: `recipes` e `environments`.

1. Crie uma versão JSON editada dos atributos de MyStack configuração e implantação que contenha os atributos relevantes. Ela deve ser parecida com a seguinte.

   ```
   {
     "opsworks": {
       "layers": {
         "php-app": {
           "name": "PHP App Server",
           "id": "efd36017-ec42-4423-b655-53e4d3710652",
           "instances": {
             "php-app1": {
               "ip": "192.0.2.0"
             }
           }
         },
         "db-master": {
           "name": "MySQL",
           "id": "2d8e0b9a-0d29-43b7-8476-a9b2591a7251",
           "instances": {
             "db-master1": {
               "ip": "192.0.2.5"
             }
           }
         },
         "lb": {
           "name": "HAProxy",
           "id": "d5c4dda9-2888-4b22-b1ea-6d44c7841193",
           "instances": {
             "lb1": {
               "ip": "192.0.2.10"
             }
           }
         }
       }
     }
   }
   ```

1. Crie um arquivo de ambiente chamado `test.json`, cole o JSON de exemplo em `default_attributes` e salve o arquivo na pasta `environments` do livro de receitas. O arquivo deve ser semelhante ao seguinte (para resumir, a maior parte do JSON de exemplo é representado por reticências).

   ```
   {
     "default_attributes" : {
       "opsworks": {
         "layers": {
           ...
         }
       }
     },
     "chef_type" : "environment",
     "json_class" : "Chef::Environment"
   }
   ```

1. Substitua o texto em `.kitchen.yml` pelo seguinte conteúdo.

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_zero
     environments_path: ./environment
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: listip 
       provisioner:
         client_rb:
           environment: test
       run_list:
         - recipe[listip::default]
       attributes:
   ```

Depois que o livro de receitas estiver configurado, você poderá usar a seguinte receita para registrar a camada IDs.

```
node['opsworks']['layers'].each do |layer, layerdata|
  log "#{layerdata['name']} : #{layerdata['id']}"
end
```

A receita enumera as camadas em `['opsworks']['layers']` e registra o nome e o ID de cada camada.

**Para executar a receita de registro de ID de camada**

1. Crie um arquivo chamado `default.rb` com a receita de exemplo e salve-o no diretório `recipes`.

1. Executar `kitchen converge`.

A parte relevante da saída deve ser semelhante ao conteúdo a seguir.

```
Recipe: listip::default       
  * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652       
       
       
  * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251       
       
       
  * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193
```

Para listar os endereços IP das instâncias, você precisa de um ciclo aninhado, como o seguinte.

```
node['opsworks']['layers'].each do |layer, layerdata|
  log "#{layerdata['name']} : #{layerdata['id']}"
  layerdata['instances'].each do |instance, instancedata|
    log "Public IP: #{instancedata['ip']}"
  end
end
```

O ciclo interno itera nas instâncias de cada camada e registra os endereços IP.

**Para executar a receita de registro de IP da instância**

1. Substitua o código em `default.rb` pela receita de exemplo.

1. Execute `kitchen converge` para executar a receita.

A parte relevante da saída deve ser semelhante ao conteúdo a seguir.

```
  * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652       
       
       
  * log[Public IP: 192.0.2.0] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.0] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.0       
       
       
  * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251       
       
       
  * log[Public IP: 192.0.2.5] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.5] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.5       
       
       
  * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193       
       
       
  * log[Public IP: 192.0.2.10] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.10] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.10
```

Quando concluir, execute `kitchen destroy`; o próximo tópico usa um novo livro de receitas.

**nota**  
Um dos motivos mais comuns para enumerar uma coleção de JSON de configuração e implantação de pilha é para obter dados para um determinado aplicativo implantado, por exemplo, o respectivo diretório de implantação. Para ver um exemplo, consulte [Receitas de implantação](create-custom-deploy.md).