

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

# Sobrepor atributos integrados
<a name="cookbooks-101-opsworks-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**  
Este tópico se aplica apenas a pilhas do Linux. Você não pode substituir atributos integrados em pilhas do Windows.

OpsWorks O Stacks instala um conjunto de livros de receitas integrados em cada instância. Muitos dos livros de receitas integrados oferecem suporte a camadas integradas e seus arquivos de atributo definem uma variedade de configurações padrão do sistema e de aplicativo, como as definições de configuração do servidor Apache. Ao colocar essas configurações em arquivos de atributo, você pode personalizar muitas definições de configuração, substituindo o atributo integrado correspondente de uma das seguintes maneiras:
+ Defina o atributo em JSON personalizado.

  Essa abordagem tem a vantagem de ser simples e flexível. No entanto, você deve inserir manualmente o JSON personalizado, portanto, não há nenhuma maneira eficiente de gerenciar as definições de atributos.
+ Implemente um livro de receitas personalizado e defina o atributo em um arquivo de atributo `customize.rb`.

  Essa abordagem é menos flexível do que usar o JSON personalizado, mas é mais eficiente, pois você pode colocar livros de receitas personalizados sob o controle de código-fonte.

Este tópico descreve como usar um arquivo de atributo de livro de receitas personalizado para substituir atributos integrados, usando o servidor Apache como exemplo. Para obter mais informações sobre como substituir atributos com o JSON personalizado, consulte [Usar JSON personalizado](workingcookbook-json-override.md). Para consultar uma discussão geral sobre como substituir atributos, consulte [Sobrepor atributos](workingcookbook-attributes.md).

**nota**  
A substituição de atributos é a maneira preferida de personalizar as definições de configuração, mas as configurações não são sempre representadas por atributos. Neste caso, você pode personalizar o arquivo de configuração substituindo o modelo que as receitas integradas usam para criar o arquivo de configuração. Para ver um exemplo, consulte [Substituir modelos integrados](cookbooks-101-opsworks-templates.md).

Os atributos integrados normalmente representam valores nos arquivos de modelo que as receitas de configuração usam para criar arquivos de configuração. Por exemplo, uma das receitas Setup do `apache2`, [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb), usa o modelo [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb) para criar o principal arquivo de configuração de servidor do Apache, `httpd.conf` (Amazon Linux) ou `apache2.conf` (Ubuntu). O exemplo a seguir é um trecho do arquivo de modelo:

```
...
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %>
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %>
##
## Server-Pool Size Regulation (MPM specific)
##

...
```

A configuração `KeepAliveTimeout` neste exemplo é o valor do atributo `[:apache][:keepalivetimeout]` O valor padrão desse atributo é definido no `apache2` arquivo de atributo [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb) do livro de receitas, conforme o trecho a seguir:

```
...
# General settings
default[:apache][:listen_ports] = [ '80','443' ]
default[:apache][:contact] = 'ops@example.com'
default[:apache][:log_level] = 'info'
default[:apache][:timeout] = 120
default[:apache][:keepalive] = 'Off'
default[:apache][:keepaliverequests] = 100
default[:apache][:keepalivetimeout] = 3
...
```

**nota**  
Para obter mais informações sobre atributos integrados comuns, consulte [Atributos de livros de receitas integrados](attributes-recipes.md).

Para oferecer suporte à substituição de atributos integrados, todos os livros de receitas integrados contêm um arquivo de atributos `customize.rb`, que é incorporado a todos os módulos usando uma diretriz `include_attribute`. Os arquivos `customize.rb` dos livros de receitas integrados não contêm definições de atributos e não têm qualquer efeito sobre os atributos integrados. Para substituir os atributos integrados, crie um livro de receitas personalizado com o mesmo nome do livro de receitas integrado e coloque suas definições de atributo em um arquivo de atributos cujo nome também é `customize.rb`. Esse arquivo tem prioridade sobre a versão integrada e é incluído em todos os módulos relacionados. Se você definir qualquer atributo integrado em seu `customize.rb`, ele substituirá o atributo integrado correspondente.

Este exemplo mostra como substituir o atributo integrado `[:apache][:keepalivetimeout]` para definir seu valor como 5, em vez de 3. Você pode usar uma abordagem semelhante para qualquer atributo integrado. No entanto, tenha cuidado em relação a quais atributos você substitui. Por exemplo, substituir atributos no namespace `opsworks` pode causar problemas para algumas receitas integradas. 

**Importante**  
Não substitua atributos integrados modificando uma cópia do arquivo de atributos integrados. Por exemplo, você *pode* colocar uma cópia de `apache.rb` na pasta `apache2/attributes` do seu livro de receitas personalizado e modificar algumas de suas configurações. No entanto, este arquivo tem prioridade sobre a versão integrada, e as receitas integradas passarão a usar sua versão do `apache.rb`. Se o OpsWorks Stacks modificar posteriormente o `apache.rb` arquivo incorporado, as receitas não receberão os novos valores, a menos que você atualize manualmente sua versão. Ao usar`customize.rb`, você substitui somente os atributos especificados; as receitas integradas continuam obtendo automaticamente up-to-date valores para cada atributo que você não substituiu.

Para iniciar, crie um livro de receitas personalizado.

**Para criar o livro de receitas**

1. No seu diretório `opsworks_cookbooks`, crie um diretório de livros de receitas chamado `apache2` e navegue até ele.

   Para substituir atributos integrados, o livro de receitas personalizado devem ter o mesmo nome que o livro de receitas integrado. Neste exemplo, é `apache2`.

1. No diretório `apache2`, crie um diretório `attributes`.

1. Adicione um arquivo chamado `customize.rb` ao o diretório `attributes` e use-o para definir os atributos integrados do livro de receitas que você deseja substituir. Para este exemplo, o arquivo deve conter o seguinte: 

   ```
   normal[:apache][:keepalivetimeout] = 5
   ```
**Importante**  
Para substituir um atributo integrado, um atributo personalizado deve ser do tipo `normal` ou superior e ter exatamente o mesmo nome de nó que o atributo integrado correspondente. O tipo `normal` garante que o atributo personalizado tenha prioridade sobre os atributos integrados, que são todos os atributos do tipo `default`. Para obter mais informações, consulte [Precedência de atributo](workingcookbook-attributes-precedence.md).

1. Crie um arquivo `.zip` de `opsworks_cookbooks` chamado `opsworks_cookbooks.zip` e carregue o arquivo em um bucket do Amazon Simple Storage Service (Amazon S3). Para simplificar, [torne o arquivo público](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html). Registre o URL para uso posterior. Você também pode armazenar seus livros de receitas em um arquivo privado do Amazon S3 ou em vários outros tipos de repositório. Para obter mais informações, 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).

Para usar o atributo personalizado, crie uma pilha e instale o livro de receitas.

**Para usar o atributo personalizado**

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

1. Especifique as seguintes configurações padrão.
   + **Nome** — ApacheConfig
   + **Região**: Oeste dos EUA (Oregon)

     Você pode colocar sua pilha em qualquer região, mas recomendamos Oeste dos EUA (Oregon) para tutoriais.
   + **Chave SSH padrão** — Um par de EC2 chaves

     Se você precisar criar um par de EC2 chaves, 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 como a pilha.

   Escolha **Advanced>>**, defina **Use custom Chef cookbooks** como **Yes** 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

   Aceite os valores padrão para as outras configurações e, em seguida, escolha **Add Stack** para criar a pilha.
**nota**  
Este exemplo usa o sistema operacional padrão, o Amazon Linux. Se preferir, use o Ubuntu. A única diferença é que, nos sistemas Ubuntu, a configuração integrada da receita produz um arquivo de configuração com as mesmas configurações chamado `apache2.conf` e o coloca no diretório `/etc/apache2`. 

1. Clique em **Adicionar uma camada** e [adicione uma camada Java App Server à pilha](layers-java.md) com as seguintes configurações.

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

   Uma instância t2.micro é suficiente para este exemplo.

1. Depois que a instância estiver online, [use SSH para fazer login](workinginstances-ssh.md). O arquivo `httpd.conf` está no diretório `/etc/httpd/conf`. Se você examinar o arquivo, verá sua configuração personalizada `KeepAliveTimeout`. O restante das configurações terá os valores padrão do arquivo integrado `apache.rb`. A parte relevante do `httpd.conf` deve ser semelhante a:

   ```
   ...
   #
   # KeepAliveTimeout: Number of seconds to wait for the next request from the
   # same client on the same connection.
   #
   KeepAliveTimeout 5
   ...
   ```