

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

# Receitas de configuração
<a name="create-custom-configure"></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).

As receitas de configuração são atribuídas ao evento do [ciclo de vida](workingcookbook-events.md) de configuração da camada, que ocorre em todas as instâncias da pilha sempre que uma instância entra ou sai do estado online. Você usa receitas de configuração a fim de ajustar a configuração de uma instância para responder à alteração, conforme apropriado. Ao implementar uma receita de configuração, lembre-se de que uma alteração feita na configuração da pilha pode envolver instâncias que não têm nada a ver com essa camada. A receita deve ser capaz de responder devidamente, o que pode significar não fazer nada em alguns casos.

## tomcat::configure
<a name="create-custom-configure-configure"></a>

A receita `tomcat::configure` se destina a um evento do ciclo de vida de configuração da camada.

```
include_recipe 'tomcat::context'
# Optional: Trigger a Tomcat restart in case of a configure event, if relevant
# settings in custom JSON have changed (e.g. java_opts/JAVA_OPTS):
#include_recipe 'tomcat::container_config'
```

A receita `tomcat::configure` é basicamente uma metarreceita que executa duas receitas dependentes.

1. A receita `tomcat::context` cria um arquivo de configuração de contexto da aplicação da web.

   Este arquivo configura os recursos JDBC usados pelas aplicações para se comunicar com a instância do MySQL, conforme abordado na próxima seção. A execução dessa receita em resposta a um evento de configuração permite que a camada atualize o arquivo de configuração de contexto da aplicação da web caso a camada do banco de dados tenha sido alterada.

1. A receita de configuração `tomcat::container_config` é reexecutada para capturar eventuais alterações feitas na configuração do contêiner.

O `include` de `tomcat::container_config` é comentado neste exemplo. Caso queira usar o JSON personalizado para modificar as configurações do Tomcat, você pode remover o comentário. Um evento do ciclo de vida de configuração acaba executando `tomcat::container_config`, que atualiza os arquivos de configuração relacionados ao Tomcat, conforme descrito em [tomcat::container\$1config](create-custom-setup.md#create-custom-setup-config) e reinicia o serviço Tomcat.

## tomcat::context
<a name="create-custom-configure-context"></a>

[O livro de receitas do Tomcat permite que os aplicativos acessem um servidor de banco de dados MySQL, que pode ser executado em uma instância separada, usando um objeto J2EE. DataSource](http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html) Com o Tomcat, você pode habilitar a conexão criando e instalando um arquivo de configuração de contexto da aplicação da web para cada aplicação. Este arquivo define a relação entre a aplicação e o recurso JDBC que a aplicação usará para se comunicar com o banco de dados. Para obter mais informações, consulte [The Context Container](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html).

A finalidade principal da receita `tomcat::context` é criar esse arquivo de configuração.

```
include_recipe 'tomcat::service'

node[:deploy].each do |application, deploy|
  context_name = deploy[:document_root].blank? ? application : deploy[:document_root]

  template "context file for #{application} (context name: #{context_name})" do
    path ::File.join(node['tomcat']['catalina_base_dir'], 'Catalina', 'localhost', "#{context_name}.xml")
    source 'webapp_context.xml.erb'
    owner node['tomcat']['user']
    group node['tomcat']['group']
    mode 0640
    backup false
    only_if { node['datasources'][context_name] }
    variables(:resource_name => node['datasources'][context_name], :webapp_name => application)
    notifies :restart, resources(:service => 'tomcat')
  end
end
```

Além dos atributos do livro de receitas do Tomcat, essa receita usa os atributos de [configuração e implantação da pilha](workingcookbook-json.md) que o OpsWorks Stacks instala com o evento Configure. O serviço OpsWorks Stacks adiciona atributos ao objeto de nó de cada instância que contêm as informações que as receitas normalmente obteriam usando pacotes de dados ou pesquisas e instala os atributos em cada instância. Os atributos contêm informações detalhadas sobre a configuração da pilha, as aplicações implantadas e eventuais dados personalizados que um usuário deseja incluir. As receitas podem obter dados dos atributos de configuração e implantação da pilha usando a sintaxe de nó do Chef padrão. Para obter mais informações, consulte [Configuração de pilha e atributos de implantação](workingcookbook-json.md). Com as pilhas do Chef 11.10, você também pode usar o Chef para obter os dados configuração e implantação da pilha. Para obter mais informações, consulte [Utilização da pesquisa do Chef](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search).

`deploy`attributes se refere ao `[:deploy]` namespace, que contém atributos relacionados à implantação que são definidos por meio do console ou da API ou gerados pelo serviço Stacks. OpsWorks O atributo `deploy` inclui um atributo para cada aplicação implantada, com o nome abreviado da aplicação. Cada atributo da aplicação contém um conjunto de atributos que caracterizam a aplicação, como a raiz do documento (`[:deploy][:appname][:document_root]`).

A receita `context` primeiro garante que o serviço seja definido para esta execução do Chef chamando [tomcat::service](create-custom-setup.md#create-custom-setup-service). Em seguida, ele define uma variável `context_name` que representa o nome do arquivo de configuração, excluindo a extensão `.xml`. Caso você use a raiz do documento padrão, `context_name` é definido como o nome abreviado da aplicação. Do contrário, ele é definido como a raiz do documento especificada. O exemplo abordado em [Criar uma pilha e executar uma aplicação](create-custom-stack.md) define a raiz do documento como `"ROOT"`, de maneira que o contexto seja ROOT e o arquivo de configuração se chame `ROOT.xml`.

A maior parte da receita passa pela lista de aplicações implantadas e, para cada aplicação, usa o modelo `webapp_context.xml.erb` para criar um arquivo de configuração. O exemplo implanta apenas uma aplicação, mas a definição do atributo `deploy` exige que você o trate como uma lista de aplicações independentemente disso.

O modelo `webapp_context.xml.erb` não é específico para sistema operacional, por isso está localizado no subdiretório `templates`, no diretório `default`.

A receita cria o arquivo de configuração da seguinte forma:
+ Usando-se valores de atributo padrão, o nome do arquivo de configuração é definido como `context_name.xml` e instalado no diretório `/etc/tomcat6/Catalina/localhost/`. 

  O nó `['datasources']` dos atributos de configuração da pilha contém um ou mais atributos, cada um mapeando um nome de contexto para o recurso de dados JDBC que a aplicação associada usará para se comunicar com o banco de dados. O nó e o conteúdo são definidos com o JSON personalizado quando você cria a pilha, conforme descrito posteriormente em [Criar uma pilha e executar uma aplicação](create-custom-stack.md). O exemplo tem um único atributo que associa o nome de contexto ROOT a um recurso JDBC chamado jdbc/mydb.
+ Usando valores de atributo padrão, o usuário do arquivo e o grupo são definidos como os valores definidos pelo pacote do Tomcat: `tomcat` (Amazon Linux) ou `tomcat6` (Ubuntu).
+ O recurso `template` só cria o arquivo de configuração caso o nó `['datasources']` exista e inclui um atributo `context_name`.
+ O recurso `template` define duas variáveis, `resource_name` e `webapp_name`.

  `resource_name` é definido como o nome do recurso associado a `context_name` e `webapp_name` é definido como o nome abreviado da aplicação.
+ O recurso do modelo reinicia o serviço Tomcat para carregar e ativar as alterações.

O modelo `webapp_context.xml.erb` consiste em um elemento `Context` que contém um elemento `Resource` com o próprio conjunto de atributos.

Os atributos `Resource` caracterizam a configuração do contexto:
+ **name**: o nome do recurso JDBC, definido como o valor `resource_name` definido em `tomcat::context`.

  Por exemplo, o nome do recurso é definido como jdbc/mydb.
+ **auth** e **type**: estas são configurações padrão para conexões JDBC `DataSource`.
+ **maxActive**, **maxIdle** e **maxWait**: o número máximo de conexões ativas e inativas, e o tempo de espera máximo para uma conexão ser retornada.
+ **username** e **password**: o nome de usuário e a senha raiz do banco de dados, obtidos junto aos atributos `deploy`.
+ **driverClassName**— O nome da classe do driver JDBC, que é definido como o driver MySQL.
+ **url**: a conexão URL.

  O prefixo depende do banco de dados. Ele deve ser definido como `jdbc:mysql` para MySQL, `jdbc:postgresql` para Postgres e `jdbc:sqlserver` para SQL Server. O exemplo define o URL como `jdbc:mysql://host_IP_Address:3306:simplejsp`, em que *simplejsp* é o nome abreviado da aplicação.
+ **factory**: a fábrica `DataSource`, obrigatória para bancos de dados MySQL.

Para obter mais informações sobre esse arquivo de configuração, consulte o DataSources tópico [Usando](http://wiki.apache.org/tomcat/UsingDataSources) no wiki do Tomcat.