

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

# Personalizando a configuração OpsWorks de pilhas substituindo atributos
<a name="workingcookbook-attributes"></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**  
Para pilhas do Windows e pilhas do Chef 12 Linux, o OpsWorks Stacks usa execuções separadas do Chef para receitas integradas e receitas personalizadas. Isso significa que você não pode usar as técnicas discutidas nesta seção para sobrepor atributos integrados para stacks do Windows e Chef 12 Linux.

Receitas e modelos dependem de uma variedade de atributos Chef para informações específicas de instância ou stack, como configurações de layer ou de servidor de aplicativo. Esses atributos têm várias fontes:
+ **JSON personalizado**: opcionalmente, você pode especificar atributos JSON personalizados ao criar, atualizar ou clonar uma pilha ou ao implantar um aplicativo.
+ **Atributos de configuração da pilha** —OpsWorks As pilhas definem esses atributos para armazenar as informações de configuração da pilha, incluindo as informações que você especifica nas configurações do console. 
+ **Atributos de implantação** — A AWS OpsWorks define atributos relacionados à implantação para eventos de implantação.
+ **Atributos de livros de receitas**: em geral, livros de receitas integrados e personalizados incluem um ou mais [arquivos de atributos](workingcookbook-installingcustom-components-attributes.md), que contêm atributos representando valores específicos do livro de receitas, como definições de configuração do servidor de aplicativos. 
+ **Chef**: a ferramenta [Ohai](http://docs.chef.io/resource_ohai.html) do Chef define atributos que representam uma ampla variedade de configurações do sistema, como tipo de CPU e memória instalada.

Para uma lista completa de configuração de stacks e atributos de implantação e atributos de livro de receitas integrado, consulte [Atributos de implantação e configuração de pilha: Linux](attributes-json-linux.md) e [Atributos de livros de receitas integrados](attributes-recipes.md). Para obter mais informações sobre atributos Ohai, consulte [Ohai](https://docs.chef.io/ohai.html).

Quando ocorre um [evento de ciclo de vida](workingcookbook-events.md) como Deploy ou Configure, ou quando você executa um [comando de stack](workingstacks-commands.md), como `execute_recipes` ou `update_packages`, o OpsWorks Stacks faz o seguinte:
+ Envia um comando correspondente para o agente em cada instância afetada.

  O agente executa as receitas apropriadas. Por exemplo, para um Implantar evento, o agente executa o Implantar receitas, seguido de quaisquer Implantar receitas personalizado.
+ Une qualquer JSON personalizado e implementa atributos com os atributos de configuração do stack e instala-o nas instâncias.

Os atributos JSON personalizado, atributos de implantação e configuração de stack, atributos de livro de receitas e atributos Ohai são unidos em um *objeto de nó*, que fornece valores de atributo às receitas. Uma instância é essencialmente stateless contanto que os atributos de configuração de stack estejam envolvidos, incluindo qualquer JSON personalizado. Quando você executa um comando stack de implantação, as receitas associadas usam os atributos de configuração do stack baixados com o comando.

**Topics**
+ [Precedência de atributo](workingcookbook-attributes-precedence.md)
+ [Sobrepor atributos com JSON personalizado](workingcookbook-json-override.md)
+ [Substituindo atributos OpsWorks de pilhas usando atributos personalizados do livro de receitas](workingcookbook-cookbook-attributes.md)

# Precedência de atributo
<a name="workingcookbook-attributes-precedence"></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).

Se um atributo for unicamente definido, Chef simplesmente o incorpora no objeto de nó. No entanto, qualquer fonte de atributo pode definir qualquer atributo, então é possível para o mesmo atributo ter múltiplas definições com valores diferentes. Por exemplo, livro de receitas `apache2` integrado define `node[:apache][:keepalive]`, mas você também pode definir esse atributo em JSON ou em um livro de receitas personalizados. Se um atributo tiver múltiplas definições, eles são avaliados em uma ordem descrita posteriormente e o objeto de nó recebe a definição com a precedência mais alta.

Um atributo é definido como seguinte:

```
node.type[:attribute][:sub_attribute][:...]=value
```

Se um atributo tiver várias definições, o tipo determina qual definição tem precedência e essa definição é incorporada ao objeto do nó. OpsWorks O Stacks usa os seguintes tipos de atributos:
+ **padrão**: esse é o tipo mais comum e significa essencialmente “usar este valor se o atributo ainda não tiver sido definido”. Se todas as definições de um atributo forem do tipo `default`, a primeira definição na ordem de avaliação tem precedência e os valores subsequentes são ignorados. Observe que o OpsWorks Stacks define todas as definições de configuração e atributos de implantação da pilha como `default` tipo.
+ **normal**: atributos com esse tipo sobrepõem quaisquer atributos `default` ou `normal` que foram definidos anteriormente na ordem da avaliação. Por exemplo, se o primeiro atributo for de um livro de receitas integrado e tiver um tipo `default` e o segundo for um atributo definido por usuário com um tipo `normal`, a segunda definição tem precedência.
+ **set**: este é um tipo obsoleto que você pode ver em livros de receitas mais antigos. Foi anulado por `normal`, que tem a mesma precedência. 

Chef oferece suporte a vários tipos de atributo adicionais, incluindo um tipo `automatic` que leva precedência sobre todas outras definições de atributo. As definições de atributo geradas pela ferramenta Ohai do Chef são todas do tipo `automatic`, então elas são, efetivamente, apenas leitura. Isso geralmente não é um problema, porque não há razão para substituí-los e eles são distintos dos atributos dos OpsWorks Stacks. No entanto, você deve ter cuidado ao nomear seus atributos de livro de receitas personalizados para que eles sejam diferentes dos atributos Ohai. Para obter mais informações, consulte [Sobre atributos](http://docs.chef.io/attributes.html).

**nota**  
A ferramenta Ohai é um executável que você pode rodar a partir da linha de comando. Para listar atributos Ohai de uma instância, entre na instância e execute `ohai` em uma janela de terminal. Esteja ciente de que isso produz uma saída muito longa.

Veja as etapas que incorporam as várias definições de atributo no objeto de nó:

1. Une quaisquer atributos de configuração de stack personalizados nos atributos de configuração de stack e implantação. 

   Atributos JSON personalizados podem ser definidos para o stack, ou para uma implantação em particular. Eles são os primeiros na ordem de avaliação e são tipos `normal` eficazes. Se um ou mais atributos de configuração de stack também estiverem definidos em JSON personalizado, os valores de JSON personalizado tomam precedência. Caso contrário, o OpsWorks Stacks incorpora apenas os atributos JSON personalizados na configuração de stack. 

1. Une quaisquer atributos JSON personalizados de implantação nos atributos de configuração de stack e implantação.

   Implantação de atributos JSON personalizados também é eficaz nos tipos `normal`, então eles tomam precedência sobre JSON de configuração de stack integrada e personalizada e JSON de implantação integrada.

1. Une os atributos de implementação e configuração do stack no objeto de nó da instância.

1. Une os atributos de livro de receitas integrados da instância no objeto de nó.

   Os atributos de livro de receitas integrados são todos do tipo `default`. Se um ou mais atributos de livro de receitas integrados também estiverem definidos nos atributos de configuração e implantação da pilha, normalmente porque você os definiu com um JSON personalizado, as definições de configuração da pilha terão precedência sobre as definições do livro de receitas incorporado. Todos os outros atributos de livro de receitas integrados são facilmente incorporados no objeto de nó.

1. Une os atributos de livro de receitas personalizados da instância no objeto de nó.

   Atributos de livro de receitas personalizados são, geralmente, do tipo `normal` ou `default`. Atributos únicos são incorporados no objeto de nó. Se quaisquer atributos de livro de receitas personalizado também foram definidos nas Etapas 1 a 3 (geralmente porque você os definiu com JSON personalizado), a precedência depende do tipo do atributo do livro de receitas personalizado:
   + Os atributos definidos nas Etapas 1 a 3 têm precedência sobre atributos de livros de receitas personalizados. `default`
   + Atributos `normal` de livros de receitas personalizados têm precedência sobre as definições das Etapas 1 a 3. 

**Importante**  
Não use atributos `default` de livro de receitas personalizados para sobrepor configuração de stack ou atributos de livro de receitas integrados. Como atributos de livro de receitas personalizados são avaliados por último, os atributos `default` tem a menor precedência, e não podem sobrepor nada.

# Sobrepor atributos com JSON personalizado
<a name="workingcookbook-json-override"></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**  
Como o OpsWorks Stacks gerencia a execução do Chef de forma diferente nas pilhas do Windows e nas pilhas do Linux, você não pode usar as técnicas discutidas nesta seção para pilhas do Windows.

A maneira mais simples de substituir um atributo OpsWorks Stacks é defini-lo em JSON personalizado, que tem precedência sobre os atributos de configuração e implantação da pilha, bem como sobre os atributos integrados e personalizados do livro de receitas. `default` Para obter mais informações, consulte [Precedência de atributo](workingcookbook-attributes-precedence.md).

**Importante**  
Você deve sobrepor atributos de configuração de stack e implantação com cuidado. Por exemplo, substituir atributos no namespace `opsworks` pode interferir as receitas integradas. Para obter mais informações, consulte [Configuração de pilha e atributos de implantação](workingcookbook-json.md).

Você também pode usar JSON personalizado para definir atributos únicos, geralmente para transferir dados a suas receitas personalizadas. Os atributos são facilmente incorporados no objeto de nó, e receitas podem fazer referência a eles usando a sintaxe de nó Chef padrão.

## Como especificar JSON personalizado
<a name="workingcookbook-json-override-specify"></a>

Para usar JSON para sobrepor um valor de atributo, você deve primeiro determinar o nome do atributo qualificado completamente por ele. Você então cria um objeto JSON que contém os atributos que deseja sobrepor, definido por seus valores preferidos. Por uma questão de comodidade, os documentos [Atributos de implantação e configuração de pilha: Linux](attributes-json-linux.md) e [Atributos de livros de receitas integrados](attributes-recipes.md) comumente usou atributos de configuração de stack, implantação e livro de receitas integrado, incluindo seus nomes completamente qualificados.

As relações de filho-parente do objeto devem corresponder aos nós de Chef qualificados completamente apropriados. Por exemplo, suponha que você quer mudar os atributos Apache a seguir: 
+ O atributo [`keepalivetimeout`](attributes-recipes-apache.md#attributes-recipes-apache-keep-timeout), que tem o nó `node[:apache][:keepalivetimeout]` e um valor padrão de `3`.
+ O atributo `logrotate` [`schedule`](attributes-recipes-apache.md#attributes-recipes-apache-log-schedule), que tem um nó `node[:apache][:logrotate][:schedule]`, e um valor padrão de `"daily"`.

Para sobrepor os atributos e definir os valores para `5` e `"weekly"`, respectivamente, você usaria o JSON personalizado a seguir:

```
{
  "apache" : {
    "keepalivetimeout" : 5,
    "logrotate" : {
       "schedule" : "weekly"
    }
  }
}
```

## Quando especificar JSON personalizado
<a name="workingcookbook-json-override-when"></a>

É possível especificar uma estrutura JSON personalizada para as tarefas a seguir:
+ [Criar um novo stack](workingstacks-creating.md)
+ [Atualizar um stack](workingstacks-edit.md)
+ [Executar um comando stack](workingstacks-edit.md)
+ [Clonar um stack](workingstacks-cloning.md)
+ [Implantar um aplicativo](workingapps-deploying.md)

Para cada tarefa, o OpsWorks Stacks mescla os atributos JSON personalizados com os atributos de configuração e implantação da pilha e os envia às instâncias para serem mesclados ao objeto do nó. Entretanto, observe o seguinte:
+ Se você especificar JSON personalizado quando criar, clonar ou atualizar um stack, os atributos são unidos em um nos atributos de configuração de stack e implantação para todos eventos de ciclo de vida subsequentes e comandos de stack.
+ Se você especificar JSON personalizado para uma implantação, os atributos são unidos nos atributos de configuração de stack e implantação apenas para o evento correspondente.

  Se quiser usar esses atributos personalizados para implantações subsequentes, você deve especificar de forma explícita o JSON personalizado novamente.

É importante lembrar que os atributos afetam somente a instância quando são usados como receitas. Se você sobrepor um valor de atributo, mas nenhuma receita subsequente fizer referência ao atributo, a alteração não tem efeito. Você deve se certificar de que o JSON personalizado é enviado antes das receitas associadas serem executadas, ou certificar-se de que as receitas apropriadas são executadas novamente. 

## Melhores práticas do JSON personalizado
<a name="workingcookbook-json-override-best"></a>

Você pode usar o JSON personalizado para substituir qualquer atributo do OpsWorks Stacks, mas inserir as informações manualmente é um pouco complicado e não está sob nenhum tipo de controle de origem. JSON personalizado é mais eficaz para os seguintes fins:
+ Quando você quiser sobrepor apenas um número pequeno de atributos, e não precisa usar livros de receita personalizados.

  Com o JSON personalizado, você pode evitar os custos indiretos de definir e manter um repositório de livro de receitas apenas para sobrepor um par de atributos.
+ Valores confidenciais, como senhas ou chaves de autenticação.

  Os atributos de livro de receitas são armazenados em um repositório, então, qualquer informação sensível tem o risco de ser comprometida. Em vez disso, defina atributos com valores fictícios e use JSON personalizado para definir os valores reais.
+ Espera-se que os valores variem.

  Por exemplo, uma prática recomendada é ter seu stack de produção suportado por stacks de desenvolvimento separado e em estágio. Suponha que esses stacks suportam um aplicativo que aceita pagamentos. Se você usar JSON personalizado para especificar o endpoint do pagamento, pode especificar uma URL de teste para posicionar stack. Quando você estiver pronto para migrar um stack atualizado ao seu stack de produção, você pode usar os mesmos livros de receitas e usar JSON personalizado para definir o endpoint do pagamento à URL de produção.
+ Valores que são específicos a um stack particular ou comando de implantação.

# Substituindo atributos OpsWorks de pilhas usando atributos personalizados do livro de receitas
<a name="workingcookbook-cookbook-attributes"></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**  
Para pilhas do Windows, o OpsWorks Stacks usa execuções separadas do Chef para receitas integradas e receitas personalizadas. Isso significa que você não pode usar as técnicas discutidas nesta seção para sobrepor atributos integrados para stacks do Windows.

O JSON personalizado é uma maneira conveniente de substituir a configuração da pilha do OpsWorks Stacks e os atributos integrados do livro de receitas, mas tem algumas limitações. Em particular, você deve inserir manualmente o JSON para cada uso, portanto, não há nenhuma maneira eficiente para gerenciar as definições. Uma abordagem melhor é frequentemente usar arquivos de atributo de livro de receitas para sobrepor atributos integrados. Fazer isso permite que você posicione as definições no controle de fonte.

O procedimento para usar arquivos de atributos personalizados para substituir as definições do OpsWorks Stacks é simples.

**Para substituir as definições de atributos OpsWorks do Stacks**

1. Defina um repositório de livro de receitas, conforme descrito em [Livros de receitas e receitas](workingcookbook.md).

1. Crie um livro de receitas com o mesmo nome que o livro de receitas integrado que contém os atributos que deseja sobrepor. Por exemplo, para sobrepor os atributos Apache, o livro de receitas deve ser nomeado apache2. 

1. Adicione uma pasta `attributes` ao seu livro de receitas e adicione um arquivo à pasta nomeada `customize.rb`. 

1. Adicione uma definição de atributo para o arquivo para cada um dos atributos de livro de receitas integrado que deseja sobrepor, defina para seu valor preferido. O atributo deve ser `normal` de um tipo ou superior e ter exatamente o mesmo nome de nó do atributo OpsWorks Stacks correspondente. Para obter uma lista detalhada dos atributos do OpsWorks Stacks, incluindo nomes de nós, consulte [Atributos de implantação e configuração de pilha: Linux](attributes-json-linux.md) e. [Atributos de livros de receitas integrados](attributes-recipes.md) Para obter mais informações sobre atributos e arquivos de atributos, consulte [Sobre arquivos de atributo](http://docs.chef.io/attributes.html).
**Importante**  
Seus atributos devem ser do `normal` tipo para substituir os atributos do OpsWorks Stacks; os `default` tipos não têm precedência. Por exemplo, se seu arquivo `customize.rb` contiver uma definição de atributo `default[:apache][:keepalivetimeout] = 5`, o atributo correspondente no arquivo de atributos `apache.rb` integrado é avaliado primeiro, e toma precedência. Para obter mais informações, consulte [Sobrepor atributos](workingcookbook-attributes.md).

1. Repita as etapas 2 a 4 para cada livro de receitas integrado com atributos que deseja sobrepor.

1. Ative livros de receitas personalizados para sua pilha e forneça as informações necessárias para que as OpsWorks pilhas baixem seus livros de receitas para as instâncias da pilha. Para obter mais informações, consulte [Instalação de livros de receitas personalizados](workingcookbook-installingcustom-enable.md).

**nota**  
Para obter uma orientação mais detalhada sobre esse procedimento, consulte [Sobrepor atributos integrados](cookbooks-101-opsworks-attributes.md).

O objeto de nó usado por eventos de ciclo de vida subsequentes, comandos de implantação e comandos de pilha agora conterá suas definições de atributos em vez dos OpsWorks valores de pilhas. 

Por exemplo, para sobrepor as configurações integradas `keepalivetimeout` e `logrotate schedule` do Apache, discutidas em [Como especificar JSON personalizado](workingcookbook-json-override.md#workingcookbook-json-override-specify), adicione um livro de receitas `apache2` ao seu repositório e um arquivo `customize.rb` à pasta `attributes` do livro de receitas com os seguintes conteúdos.

```
normal[:apache][:keepalivetimeout] = 5
normal[:apache][:logrotate][:schedule] = 'weekly'
```

**Importante**  
Você não deve substituir os atributos do OpsWorks Stacks modificando uma cópia do arquivo de atributos incorporado associado. Se, por exemplo, sua cópia `apache.rb` para sua pasta `apache2/attributes` e modificar algumas de suas configurações, você basicamente sobrepõem todos os atributos no arquivo integrado. Receitas usarão as definições de atributo de sua cópia e ignorarão o arquivo integrado. Se o OpsWorks Stacks modificar posteriormente o arquivo de atributos integrado, as receitas não terão acesso às alterações, a menos que você atualize manualmente sua cópia.   
Para evitar essa situação, todos livros de receita integrados contêm um arquivo de atributos `customize.rb` vazio, que é necessário em todos módulos ao longo de um diretório `include_attribute`. Ao sobrepor atributos em sua cópia do `customize.rb`, você afeta apenas aqueles atributos específicos. As receitas obterão quaisquer outros valores de atributo dos arquivos de atributos integrados, e obterão automaticamente os valores atuais de qualquer atributo que você não sobrepôs.  
Essa abordagem ajuda você a manter o número de atributos em seu repositório de livro de receitas pequeno, que reduz seus custos indiretos de manutenção e torna as atualizações futuras mais fáceis de serem gerenciadas.