

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Recetas de configuración
<a name="create-custom-configure"></a>

**importante**  
El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en [AWS Re:post](https://repost.aws/) o a través de Premium [AWS Support](https://aws.amazon.com/support).

Las recetas de configuración se asignan al evento Configure [del ciclo de vida](workingcookbook-events.md), que se produce en todas las instancias de la pila siempre que una instancia entra o sale del estado online. Las recetas de configuración se usan para ajustar la configuración de una instancia para responder a posibles cambios, según corresponda. Cuando implemente una receta de configuración, tenga en cuenta que el cambio en la configuración de la pila podría involucrar a instancias que no tienen nada que ver con esta capa. La receta debe ser capaz de responder adecuadamente, lo que podría suponer no hacer nada en algunos casos.

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

La receta `tomcat::configure` se destina a un evento Configure del ciclo de vida de la capa.

```
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'
```

La receta `tomcat::configure` es básicamente una metarreceta que ejecuta dos recetas dependientes.

1. La receta `tomcat::context` crea un archivo de configuración del contexto de la aplicación web.

   Este archivo configura los recursos de JDBC que las aplicaciones utilizan para comunicarse con la instancia de MySQL, tal y como se trata en la siguiente sección. La ejecución de esta receta en respuesta a un evento de configuración permite a la capa actualizar el archivo de configuración del contexto de la aplicación web, en caso de que la capa de base de datos haya cambiado.

1. La receta de configuración `tomcat::container_config` se ejecuta de nuevo para capturar los cambios en la configuración de los contenedores.

`include` para `tomcat::container_config` aparece comentado en este ejemplo. Si desea utilizar JSON personalizado para modificar la configuración de Tomcat, puede eliminar el comentario. Un evento Configure del ciclo de vida ejecuta, a continuación, `tomcat::container_config`, que actualiza los archivos de configuración relacionados con Tomcat, tal y como se describe en [tomcat::container\$1config](create-custom-setup.md#create-custom-setup-config), y reinicia el servicio de Tomcat.

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

El recetario de Tomcat permite a las aplicaciones acceder a un servidor de bases de datos MySQL, que se puede ejecutar en una instancia independiente, mediante un objeto [ DataSourceJ2EE](http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html). Con Tomcat, puede activar la conexión creando e instalando un archivo de configuración del contexto de la aplicación web por cada aplicación. Este archivo define la relación entre la aplicación y el recurso JDBC que la aplicación utilizará para comunicarse con la base de datos. Para obtener más información, consulte [The Context Container](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html).

El principal objetivo de la receta `tomcat::context` es crear este archivo de configuración.

```
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
```

Además de los atributos del recetario de Tomcat, esta receta utiliza los atributos de [configuración e implementación de la pila que OpsWorks Stacks instala con el evento](workingcookbook-json.md) Configure. El servicio OpsWorks Stacks agrega atributos al objeto de nodo de cada instancia que contienen la información que las recetas suelen obtener mediante bolsas de datos o búsquedas, e instala los atributos en cada instancia. Los atributos contienen información detallada sobre la configuración de la pila, las aplicaciones implementadas y aquellos datos personalizados que un usuario quiera incluir. Las recetas pueden obtener datos de los atributos de configuración e implementación de la pila utilizando la sintaxis de nodo de Chef estándar. Para obtener más información, consulte [Atributos de configuración e implementación de pilas](workingcookbook-json.md). Con las pilas de Chef 11.10, también puede utilizar la búsqueda de Chef para obtener los datos de configuración e implementación de la pila. Para obtener más información, consulte [Uso de la búsqueda de Chef](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search).

`deploy`los atributos hacen referencia al espacio de `[:deploy]` nombres, que contiene los atributos relacionados con la implementación que se definen a través de la consola o la API, o que se generan mediante el servicio Stacks. OpsWorks El atributo `deploy` incluye un atributo por cada aplicación implementada, cuyo nombre es el nombre abreviado de la aplicación. Cada atributo de aplicación contiene un conjunto de atributos que caracterizan la aplicación, por ejemplo, la raíz de documentos (`[:deploy][:appname][:document_root]`).

La receta `context` garantiza, en primer lugar, que el servicio se defina para esta ejecución de Chef llamando a [tomcat::service](create-custom-setup.md#create-custom-setup-service). A continuación, define una variable `context_name` que representa el nombre del archivo de configuración, sin la extensión `.xml`. Si utiliza la raíz de documentos de forma predeterminada, `context_name` se establece en el nombre abreviado de la aplicación. De lo contrario, se establece en la raíz de documentos especificada. En el ejemplo tratado en [Crear una pila y ejecutar una aplicación](create-custom-stack.md) se establece la raíz de documentos en `"ROOT"`, de manera que el contexto es ROOT y el archivo de configuración se llama `ROOT.xml`.

La mayor parte de la receta recorre la lista de aplicaciones implementadas y utiliza con cada una la plantilla `webapp_context.xml.erb` para crear un archivo de configuración de contexto. En el ejemplo se implementa una única aplicación, pero la definición del atributo `deploy` requiere que se trate como una lista de aplicaciones independientemente.

La plantilla `webapp_context.xml.erb` no contiene ningún valor de configuración específico del sistema operativo, por lo que se encuentra en el subdirectorio `templates` del directorio `default`.

La receta crea el archivo de configuración de la manera siguiente:
+ Si se usan los valores de atributo predeterminados, el nombre de archivo de configuración se establece en `context_name.xml` y se instala en el directorio `/etc/tomcat6/Catalina/localhost/`. 

  El nodo `['datasources']` de los atributos de configuración de la pila contiene uno o varios atributos, cada uno de los cuales asigna un nombre de contexto a los recursos de datos JDBC que la aplicación asociada va a utilizar para comunicarse con la base de datos. El nodo y su contenido se definen con JSON personalizado cuando se crea la pila, tal y como se describe más adelante en [Crear una pila y ejecutar una aplicación](create-custom-stack.md). El ejemplo tiene un único atributo que asocia el nombre de contexto ROOT con un recurso JDBC llamado jdbc/mydb.
+ Si se usan los valores de atributo predeterminados, el usuario y el grupo del archivo se establecen en los valores que se definen en el paquete de Tomcat: `tomcat` (Amazon Linux) o `tomcat6` (Ubuntu).
+ El recurso `template` crea el archivo de configuración solo si existe el nodo `['datasources']` e incluye un atributo `context_name`.
+ El recurso `template` define dos variables, `resource_name` y `webapp_name`.

  `resource_name` está establecido en el nombre del recurso que se asocia con `context_name`, y `webapp_name` está establecido en el nombre abreviado de la aplicación.
+ El recurso de plantilla reinicia el servicio de Tomcat para cargar y activar los cambios.

La plantilla `webapp_context.xml.erb` se compone de un elemento `Context` que contiene un elemento `Resource` con su propio conjunto de atributos.

Estos atributos `Resource` caracterizan la configuración del contexto:
+ **name**: el nombre del recurso de JDBC, que se establece en el valor `resource_name` definido en `tomcat::context`.

  En el ejemplo, el nombre del recurso está establecido en jdbc/mydb.
+ **auth** y **tipo**: estos son valores de configuración estándar para las conexiones `DataSource` de JDBC.
+ **maxActive**, **maxIdle** y **maxWait**: el número máximo de conexiones activas e inactivas, y el tiempo máximo de espera hasta que se devuelve una conexión.
+ **username** y **password**: la contraseña raíz y el nombre del usuario de la base de datos, que se obtienen de los atributos `deploy`.
+ **driverClassName**—El nombre de la clase del controlador JDBC, que se establece en el controlador MySQL.
+ **url**: la URL de conexión.

  El prefijo depende de la base de datos. Debe establecerse en `jdbc:mysql` para MySQL, `jdbc:postgresql` para Postgres, y en `jdbc:sqlserver` para SQL Server. En el ejemplo se establece la dirección URL en `jdbc:mysql://host_IP_Address:3306:simplejsp`, donde *simplejsp* es el nombre abreviado de la aplicación.
+ **factory**: el generador `DataSource`, necesario en las bases de datos MySQL.

[Para obtener más información sobre este archivo de configuración, consulte el tema Uso de la wiki de Tomcat. DataSources](http://wiki.apache.org/tomcat/UsingDataSources)