

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.

# Versiones de Chef
<a name="workingcookbook-chef11"></a>

**importante**  
El AWS OpsWorks Stacks servicio finalizó 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).

OpsWorks Stacks es compatible con varias versiones de Chef. Tú seleccionas la versión al [crear la pila](workingstacks-creating.md). OpsWorks Luego, Stacks instala esa versión de Chef en todas las instancias de la pila junto con un conjunto de recetas integradas que son compatibles con esa versión. Si instala alguna receta personalizada, deberá ser compatible con la versión de Chef de la pila.

OpsWorks Actualmente, Stacks es compatible con las versiones 12, 11.10, 11.4 y 0.9 de Chef para las pilas de Linux y Chef 12.2 (actualmente Chef 12.22) para las pilas de Windows. Por comodidad, se les hace referencia por los números de versión principal y menor. En el caso de las pilas de Linux, puede usar Configuration Manager para especificar la versión de Chef que se usará al [crear una pila](workingstacks-creating.md). Las pilas de Windows deben utilizar Chef 12.2. Para obtener más información, incluidas directrices para migrar pilas a versiones de Chef más recientes, consulte [Versiones de Chef](#workingcookbook-chef11). Para obtener información completa de la versión, consulte [OpsWorks Sistemas operativos Stacks](workinginstances-os.md).

**Chef 12.2**  
La compatibilidad con Chef 12.2 se introdujo en mayo de 2015 y solo es para las pilas de Windows. La versión actual de Chef en las pilas de Windows es Chef 12.22. Se ejecuta con Ruby 2.3.6 y utiliza el [cliente de chef en modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), el cual inicia un servidor Chef en memoria local llamado [chef-zero](https://docs.chef.io/ctl_chef_client.html#about-chef-zero). La presencia de este servidor permite que las recetas usen las bolsas de datos y la búsqueda de Chef. Si bien la compatibilidad presenta algunas limitaciones, las cuales se describen en [Implementación de recetas: Chef 12.2](workingcookbook-chef12.md), puede ejecutar muchos libros de recetas de la comunidad sin ninguna modificación.

**Chef 12**  
La compatibilidad con Chef 12 se introdujo en diciembre de 2015 y se utiliza únicamente para las pilas de Linux. Se ejecuta con Ruby 2.1.6 o 2.2.3, y utiliza el [cliente de chef en modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), lo que habilita las recetas para usar la búsqueda y las bolsas de datos de Chef. Para obtener más información, consulte [OpsWorks Sistemas operativos Stacks](workinginstances-os.md).

**Chef 11.10**  
La compatibilidad con Chef 11.10 se introdujo en marzo de 2014 y se utiliza únicamente para las pilas de Linux. Se ejecuta con Ruby 2.0.0 y utiliza el [cliente de chef en modo local](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), lo que habilita las recetas para usar la búsqueda y las bolsas de datos de Chef. Si bien la compatibilidad presenta algunas limitaciones, las cuales se describen en [Implementación de recetas: Chef 11.10](workingcookbook-chef11-10.md), puede ejecutar muchos libros de recetas de la comunidad sin ninguna modificación. También puede utilizar [Berkshelf](http://berkshelf.com/) para administrar las dependencias de los libros de recetas. Las versiones compatibles de Berkshelf dependen del sistema operativo. Para obtener más información, consulte [OpsWorks Sistemas operativos Stacks](workinginstances-os.md). No puede crear pilas de CentOS que usen Chef 11.10.

**Chef 11.4**  
La compatibilidad con Chef 11.4 se introdujo en julio de 2013 y se utiliza únicamente para de las pilas de Linux. Se ejecuta con Ruby 1.8.7 y utiliza [chef-solo](https://docs.chef.io/chef_solo.html), que no es compatible con la búsqueda ni las bolsas de datos de Chef. Con OpsWorks Stacks, a menudo puedes usar libros de cocina comunitarios que dependen de esas funciones, pero debes modificarlos como se describe en. [Migración a una nueva versión de Chef](workingcookbook-chef11-migrate.md) No puede crear pilas de CentOS que usen Chef 11.4. Las pilas de Chef 11.4 no son compatibles con los puntos de enlace regionales fuera de la región Región Este de EE. UU. (Norte de Virginia).

**Chef 0.9**  
 Chef 0.9 solo se utiliza con pilas de Linux y ya no es compatible. Tenga en cuenta estos detalles:   
+ No puede utilizar la consola para crear una nueva pila de Chef 0.9.

  Debe utilizar la interfaz de línea de comandos o la API, o debe crear una pila con otra versión de Chef y después modificar la configuración de la pila.
+ Las nuevas funciones OpsWorks de Stacks no están disponibles para las pilas Chef 0.9.
+ Las nuevas versiones del sistema operativo proporcionarán compatibilidad limitada con pilas de Chef 0.9.

  En particular, Amazon Linux 2014.09 y versiones posteriores no son compatibles con pilas Chef 0.9 con capas del servidor de aplicaciones de Rails que dependen de Ruby 1.8.7.
+ Las nuevas regiones de AWS, incluyendo Europa (Fráncfort), no admiten pilas de Chef 0.9.
No recomendamos utilizar Chef 0.9 con pilas nuevas. Debe migrar las pilas existentes a la última versión de Chef tan pronto como sea posible.

Si quieres usar libros de cocina comunitarios con OpsWorks Stacks, [te recomendamos que especifiques Chef 12](workingstacks-creating.md) para las nuevas pilas de Linux y migres las pilas de Linux existentes a Chef 12. Puedes usar la consola, la API o la CLI de OpsWorks Stacks para migrar tus pilas existentes a una versión más reciente de Chef. Para obtener más información, consulte [Migración a una nueva versión de Chef](workingcookbook-chef11-migrate.md).

**Topics**
+ [Implementación de recetas para pilas de Chef 12.2](workingcookbook-chef12.md)
+ [Implementación de recetas en pilas de Chef12](workingcookbook-chef12-linux.md)
+ [Implementación de recetas para pilas de Chef 11.10](workingcookbook-chef11-10.md)
+ [Implementación de recetas para pilas de Chef 11.4](workingcookbook-chef11-4.md)
+ [Migración de una pila de Linux existente a una nueva versión de Chef](workingcookbook-chef11-migrate.md)

# Implementación de recetas para pilas de Chef 12.2
<a name="workingcookbook-chef12"></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 actuales. 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).

Chef 12.2 (actualmente Chef 12.22) solo está disponible para pilas de Windows, que deben ejecutar dicha versión de Chef.
+ Las recetas deben usar atributos y recursos específicos de Windows para algunos fines.

  Para obtener más información, consulte [Chef para Microsoft Windows](https://docs.chef.io/windows.html).
+ Las ejecuciones de Chef usan Ruby 2.3.6; por lo tanto, las recetas pueden usar la nueva sintaxis de Ruby.
+ Y también la búsqueda y las bolsas de datos de Chef.

  Las pilas de Chef 12.2 pueden usar muchos libros de recetas de la comunidad sin modificaciones. Para obtener más información, consulte [Uso de la búsqueda de Chef](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search) y [Uso de las bolsas de datos](workingcookbook-chef11-10.md#workingcookbook-chef11-10-databag).
+ La mayoría de los atributos de implementación y configuración de pila que se describen en [OpsWorks Referencia de la bolsa de datos Stacks](data-bags.md) y [Atributos integrados de los libros de recetas](attributes-recipes.md) están disponibles para las recetas de Windows.

  Puede utilizar la búsqueda de Chef para obtener estos valores de atributo. Para ver un ejemplo, consulta [Obtención de valores de atributo con la búsqueda de Chef](cookbooks-101-opsworks-opsworks-stack-config-search.md). Para obtener una lista de atributos, consulte [OpsWorks Referencia de la bolsa de datos Stacks](data-bags.md).

# Implementación de recetas en pilas de Chef12
<a name="workingcookbook-chef12-linux"></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 actuales. 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 pilas de Chef 12 ofrecen las siguientes ventajas con respecto a las pilas de Chef 11.10:
+ Las ejecuciones de Chef usan Ruby 2.1.6, por lo tanto, las recetas pueden usar la nueva sintaxis de Ruby.
+ Con las pilas de Chef 12 se pueden utilizar aún más libros de recetas de la comunidad sin modificaciones. Si no hay libros de recetas integrados, no habrá posibilidad de conflicto de nombres entre los integrados y los personalizados. 
+ Ya no estás limitado a las versiones de Berkshelf para las que OpsWorks Stacks ha proporcionado paquetes prediseñados. Berkshelf ya no está instalado en las instancias de Stacks de Chef 12 OpsWorks . En su lugar, puede utilizar cualquier versión de Berkshelf en la estación de trabajo local. 
+ Ahora hay una separación clara entre los libros de cocina integrados que OpsWorks Stacks proporciona con Chef 12 (Elastic Load Balancing, Amazon RDS y Amazon ECS) y los libros de cocina personalizados. Esto facilita la solución de problemas de las ejecuciones erróneas de Chef.

# Implementación de recetas para pilas de Chef 11.10
<a name="workingcookbook-chef11-10"></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 actuales. 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 pilas de Chef 11.10 ofrecen las siguientes ventajas con respecto a las pilas de Chef 11.4:
+ Las ejecuciones de Chef usan Ruby 2.0.0; por lo tanto, las recetas pueden usar la nueva sintaxis de Ruby.
+ Y también la búsqueda y las bolsas de datos de Chef.

  Las pilas de Chef 11.10 pueden usar muchos libros de recetas de la comunidad sin modificaciones.
+ Puede utilizar Berkshelf para administrar los libros de recetas.

  Berkshelf ofrece una forma mucho más flexible de administrar los libros de recetas personalizados y usar los libros de la comunidad en una pila.
+ Los libros de recetas deben declarar las dependencias en `metadata.rb`.

  Si su libro de recetas depende de otro, deberá incluir la dependencia en el archivo `metadata.rb` de su libro de recetas. Por ejemplo, si su libro de recetas incluye una receta con una instrucción del tipo `include_recipe anothercookbook::somerecipe`, el archivo `metadata.rb` de su libro de recetas debe incluir la línea siguiente: `depends "anothercookbook"`.
+ OpsWorks Stacks instala un cliente MySQL en las instancias de una pila solo si la pila incluye una capa MySQL.
+ OpsWorks Stacks instala un cliente de Ganglia en las instancias de una pila solo si la pila incluye una capa de Ganglia.
+ Si una implementación ejecuta `bundle install` y la instalación da error, la implementación también da error.

**importante**  
No reutilice los nombres de los libros de recetas integrados con libros personalizados o de la comunidad. Los libros de recetas personalizados que tienen el mismo nombre que los libros integrados podrían dar error. [Para ver una lista completa de los libros de cocina integrados que están disponibles con las versiones Chef 11.10, 11.4 y 0.9, consulta el repositorio opsworks-cookbooks en. GitHub](https://github.com/aws/opsworks-cookbooks)  
Los libros de recetas con caracteres que no sean ASCII y que se ejecutan satisfactoriamente en pilas de Chef 0.9 y 11.4 podrían dar error en una pila de Chef 11.10. El motivo es que las pilas de Chef 11.10 utilizan Ruby 2.0.0 para las ejecuciones de Chef, lo que tiene unos requisitos de codificación mucho mayores que los de Ruby 1.8.7. Para garantizar que dichos libros de recetas se ejecuten correctamente en las pilas de Chef 11.10, cada archivo que utilice caracteres que no sean ASCII debería tener un comentario en la parte superior que ofrezca información sobre la codificación. Por ejemplo, en el caso de la codificación UTF-8, el comentario sería `# encoding: UTF-8`. Para obtener más información sobre la codificación de Ruby 2.0.0, consulte [Codificación](http://www.ruby-doc.org/core-2.0.0/Encoding.html).

**Topics**
+ [Instalación y prioridad de los libros de recetas](#workingcookbook-chef11-10-override)
+ [Uso de la búsqueda de Chef](#workingcookbook-chef11-10-search)
+ [Uso de las bolsas de datos](#workingcookbook-chef11-10-databag)
+ [Uso de Berkshelf](#workingcookbook-chef11-10-berkshelf)

## Instalación y prioridad de los libros de recetas
<a name="workingcookbook-chef11-10-override"></a>

El procedimiento para instalar los libros de cocina de OpsWorks Stacks funciona de forma algo diferente en las pilas de Chef 11.10 que en las versiones anteriores de Chef. En el caso de las pilas Chef 11.10, una vez que OpsWorks Stacks instala los libros de cocina integrados, personalizados y de Berkshelf, los fusiona en un directorio común en el siguiente orden:

1. Libros de recetas integrados.

1. Libros de recetas de Berkshelf, si los hay.

1. Libros de recetas personalizados, si los hay. 

Cuando OpsWorks Stacks realiza esta combinación, copia todo el contenido de los directorios, incluidas las recetas. Si hay duplicados, se aplican las reglas siguientes:
+ El contenido de los libros de recetas de Berkshelf prevalece sobre los libros de recetas integrados.
+ El contenido de los libros de recetas personalizados prevalece sobre los libros de recetas de Berkshelf.

Para ilustrar este proceso, considere la siguiente situación, donde los tres directorios incluyen un libro de recetas llamado `mycookbook`:
+ Libros de recetas integrados: `mycookbook` incluye un archivo de atributos llamado `someattributes.rb`, un archivo de plantilla llamado `sometemplate.erb` y una receta llamada `somerecipe.rb`.
+ Libros de recetas de Berkshelf: `mycookbook` incluye y `sometemplate.erb` y `somerecipe.rb`.
+ Libros de recetas personalizados: `mycookbook` incluye `somerecipe.rb`.

El libro de recetas fusionado contiene lo siguiente:
+ `someattributes.rb` del libro de recetas integrado.
+ `sometemplate.erb` del libro de recetas de Berkshelf.
+ `somerecipe.rb` del libro de recetas personalizado.

**importante**  
No debe personalizar la pila de Chef 11.10 copiando todo un libro de recetas integrado en el repositorio y después modificando una parte. Si lo hace de esta forma, se anula todo el libro integrado y las recetas. Si OpsWorks Stacks actualiza ese libro de cocina, tu stack no se beneficiará de esas actualizaciones a menos que actualices manualmente tu copia privada. Para obtener más información sobre cómo personalizar las pilas, consulte [Personalizar Stacks OpsWorks](customizing.md).

## Uso de la búsqueda de Chef
<a name="workingcookbook-chef11-10-search"></a>

Puede utilizar el [método `search`](http://docs.chef.io/dsl_recipe.html#search) de Chef en las recetas para hacer consultas de datos de la pila. Usas la misma sintaxis que usarías para el servidor Chef, pero OpsWorks Stacks obtiene los datos del objeto del nodo local en lugar de consultarlos en un servidor Chef. Estos datos incluyen:
+ Los [atributos de configuración e implementación de pila](workingstacks-json.md) de la instancia.
+ Los atributos de los archivos de atributos de los libros de recetas personalizados e integrados de la instancia.
+ Los datos del sistema recopilados por Ohai.

Los atributos de configuración e implementación de la pila contienen la mayor parte de la información que las recetas suelen obtener mediante la búsqueda, incluidos datos como los nombres de host y las direcciones IP de cada instancia en línea de la pila. OpsWorks Stacks actualiza estos atributos para cada [evento del ciclo](workingcookbook-events.md) de vida, lo que garantiza que reflejen con precisión el estado actual de la pila. Esto se traduce en que podrá utilizar con frecuencia recetas de la comunidad dependientes de búsqueda en su pila sin modificaciones. El método de búsqueda seguirá devolviendo los datos adecuados, solo que procederán de los atributos de configuración e implementación de la pila, en lugar de un servidor.

La principal limitación de la búsqueda de OpsWorks Stacks es que solo gestiona los datos del objeto del nodo local, en particular los atributos de configuración y despliegue de la pila. Por este motivo, los siguientes tipos de datos podrían no estar disponibles en la búsqueda:
+ Atributos definidos localmente en otras instancias.

  Si una receta define un atributo de forma local, esa información no se envía al servicio OpsWorks Stacks, por lo que no puedes acceder a esos datos desde otras instancias mediante la búsqueda.
+ Atributos `deploy` personalizados.

  Puede especificar JSON personalizado cuando [implementa una aplicación](workingapps-deploying.md) y los atributos correspondientes se instalan en las instancias de la pila para dicha implementación. Sin embargo, si implementa únicamente en instancias seleccionadas, los atributos solo se instalarán en tales instancias. Las consultas de esos atributos JSON personalizados darán error en todas las demás instancias. Además, los atributos personalizados se incluyen en el JSON de configuración e implementación de la pila solo para esa implementación específica. Se podrá obtener acceso a ellos solo hasta que el siguiente evento del ciclo de vida instale un nuevo conjunto de atributos de configuración e implementación de la pila. Tenga en cuenta que si [especifica JSON personalizado para la pila](workingstacks-json.md), los atributos se instalarán en todas las instancias con cada evento del ciclo de vida, y siempre se podrá obtener acceso a ellos a través de la búsqueda.
+ Datos de Ohai de otras instancias.

  La [herramienta Ohai](http://docs.chef.io/resource_ohai.html) de Chef obtiene varios datos del sistema en una instancia y los añade al objeto de nodo. Estos datos se almacenan localmente y no se devuelven al servicio de búsqueda OpsWorks Stacks, por lo que no puede obtener acceso a ellos desde otras instancias. No obstante, algunos de estos datos podrían incluirse en los atributos de configuración e implementación de la pila.
+ Instancias sin conexión.

  Los atributos de configuración e implementación de la pila contienen únicamente datos para las instancias online.

En el siguiente extracto de una receta se muestra cómo obtener la dirección IP privada de una instancia de una capa PHP utilizando la búsqueda. 

```
appserver = search(:node, "role:php-app").first
Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
```

**nota**  
Cuando OpsWorks Stacks añade los atributos de configuración y despliegue de la pila al objeto de nodo, en realidad crea dos conjuntos de atributos de capa, cada uno con los mismos datos. Un conjunto está en el espacio de `layers` nombres, que es la forma en que OpsWorks Stacks almacena los datos. El otro conjunto está en el espacio de nombres `role`, que es el modo en que el servidor de Chef almacena los datos equivalentes. El propósito del espacio de `role` nombres es permitir que el código de búsqueda que se implementó para el servidor Chef se ejecute en una instancia de Stacks. OpsWorks Si estás escribiendo código específicamente para OpsWorks Stacks, puedes usar uno de los ejemplos anteriores `layers:php-app` o `role:php-app` el ejemplo anterior y obtendrás el mismo `search` resultado.

## Uso de las bolsas de datos
<a name="workingcookbook-chef11-10-databag"></a>

Puede utilizar el [método `data_bag_item`](http://docs.chef.io/dsl_recipe.html#data-bag-item) de Chef en las recetas para consultar la información en un contenedor de datos. Si bien se utiliza la misma sintaxis que usaría para el servidor de Chef, OpsWorks Stacks obtendrá los datos de los atributos de configuración e implementación de pila de la instancia. Sin embargo, OpsWorks Stacks no es compatible actualmente con los entornos de Chef, por lo que `node.chef_environment` siempre regresa. `_default`

Las bolsas de datos se crean usando JSON personalizado para agregar uno o varios atributos al atributo `[:opsworks][:data_bags]`. En el siguiente ejemplo se muestra el formato general para crear una bolsa de datos en JSON personalizado.

**nota**  
No puede crear una bolsa de datos añadiéndola al repositorio del libro de recetas. Debe utilizar JSON personalizado.

```
{
  "opsworks": {
    "data_bags": {
      "bag_name1": {
        "item_name1: {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      "bag_name2": {
        "item_name1": {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      ...
    }
  }
}
```

Por lo general, usted [especifica JSON personalizado para la pila](workingstacks-json.md), el cual instalará los atributos personalizados en todas las instancias con cada evento del ciclo de vida subsecuente. También puede especificar JSON personalizado cuando implementa una aplicación, pero esos atributos se instalan solo para dicha implementación y solo en un conjunto de instancias seleccionado. Para obtener más información, consulte [Implementación de aplicaciones](workingapps-deploying.md).

En el siguiente ejemplo de JSON personalizado se crea una bolsa de datos llamada `myapp`. Tiene un elemento, `mysql`, con dos pares clave-valor.

```
{ "opsworks": {
    "data_bags": {
      "myapp": {
        "mysql": { 
          "username": "default-user",
          "password": "default-pass"
        }
      }
    }
  }
}
```

Para utilizar los datos en la receta, puede llamar a `data_bag_item` y pasarle los nombres de la bolsa de datos y de los valores, tal y como se muestra en el siguiente fragmento.

```
mything = data_bag_item("myapp", "mysql")
Chef::Log.info("The username is '#{mything['username']}' ")
```

Para modificar los datos de la bolsa de datos, solo tiene que modificar el JSON personalizado, que se instalará en las instancias de la pila con el siguiente evento del ciclo de vida. 

## Uso de Berkshelf
<a name="workingcookbook-chef11-10-berkshelf"></a>

Con pilas de Chef 0.9 y Chef 11.4, solo se puede instalar un repositorio de libro de recetas personalizado. Con pilas de Chef 11.10 , puede utilizar [Berkshelf](http://berkshelf.com/) para administrar los libros de recetas y sus dependencias, lo que le permite instalar libros de recetas de varios repositorios. (Para obtener más información, consulte [Empaquetado local de las dependencias del libro de recetas](best-practices-packaging-cookbooks-locally.md)). En concreto, con Berkshelf, puedes instalar libros de cocina comunitarios OpsWorks compatibles con Stacks directamente desde sus repositorios en lugar de tener que copiarlos a tu repositorio de libros de cocina personalizado. Las versiones compatibles de Berkshelf dependen del sistema operativo. Para obtener más información, consulte [OpsWorks Sistemas operativos Stacks](workinginstances-os.md).

Para utilizar Berkshelf, debe habilitarlo de forma explícita, como se describe en [Instalación de libros de recetas personalizados](workingcookbook-installingcustom-enable.md). Después, incluya un archivo `Berksfile` en el directorio raíz del repositorio del libro de recetas donde especifique qué libros de recetas instalar. 

Para especificar un libro de recetas externo en un archivo Berksfile, incluya un atributo de origen en la parte superior del archivo que especifique la URL del repositorio predeterminado. Berkshelf buscará los libros de cocina en la fuente, a menos que especifiques explícitamente un repositorio. URLs Después, incluya una línea por cada libro de recetas que desea instalar con el siguiente formato: 

```
cookbook 'cookbook_name', ['>= cookbook_version'], [cookbook_options]
```

Los campos siguientes `cookbook` especifican el libro de recetas en particular.
+ *cookbook\$1name*— (Obligatorio) Especifica el nombre del libro de cocina.

  Si no incluye ningún otro campo, Berkshelf instala el libro de cocina desde la fuente especificada. URLs
+ *cookbook\$1version*— (Opcional) Especifica la versión o versiones del libro de cocina.

  Puede utilizar un prefijo como `=` o `>=` para especificar una versión determinada o un intervalo de versiones aceptables. Si no especifica ninguna versión, Berkshelf instala la última.
+ *cookbook\$1options*— (Opcional) El campo final es un hash que contiene uno o más pares clave-valor que especifican opciones como la ubicación del repositorio.

  Por ejemplo, puede incluir una clave `git` para designar un repositorio determinado de Git y una clave `tag` para designar una ramificación concreta del repositorio. Especificar la ramificación del repositorio suele ser la mejor forma de garantizar que instala su libro de recetas preferido.

**importante**  
No declare los libros de recetas incluyendo una línea `metadata` en el archivo Berksfile y declarando las dependencias de los libros en `metadata.rb`. Para que esto funcione correctamente, ambos archivos deben estar en el mismo directorio. Con OpsWorks Stacks, el archivo Berksfile debe estar en el directorio raíz del repositorio, pero los `metadata.rb` archivos deben estar en sus respectivos directorios de libros de cocina. En lugar de esto, debería declarar explícitamente los libros de recetas externos en el archivo Berksfile.

A continuación se incluye un ejemplo de un archivo Berksfile que muestra diferentes maneras de especificar los libros de recetas. Para obtener más información acerca de cómo crear un archivo Berksfile, consulte [Berkshelf](http://berkshelf.com/).

```
source "https://supermarket.chef.io"

cookbook 'apt'
cookbook 'bluepill', '>= 2.3.1'
cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git'
cookbook 'build-essential', '>= 1.4.2', git: 'git://github.com/opscode-cookbooks/build-essential.git', tag: 'v1.4.2'
```

Este archivo instala los siguientes libros de recetas:
+ La versión más reciente de `apt` desde el repositorio de libros de recetas de la comunidad.
+ La versión más reciente de `bluepill` desde los libros de recetas de la comunidad, siempre que sea la versión 2.3.1 o posterior.
+ La versión más reciente de `ark` desde un repositorio especificado.

  La URL de este ejemplo corresponde a un repositorio de libros de cocina de una comunidad pública GitHub, pero puedes instalar libros de cocina de otros repositorios, incluidos los privados. Para obtener más información, consulte [Berkshelf](http://berkshelf.com/).
+ El libro de recetas `build-essential` de la ramificación v1.4.2 del repositorio especificado.

Un repositorio de libros de recetas personalizados puede contener libros de recetas personalizados además de un archivo Berksfile. En ese caso, OpsWorks Stacks instala ambos conjuntos de libros de cocina, lo que significa que una instancia puede tener hasta tres repositorios de libros de cocina. 
+ Los libros de recetas integrados se instalan en `/opt/aws/opsworks/current/cookbooks`.
+ Si en su repositorio de libros de recetas personalizados hay alguno, se instalará en `/opt/aws/opsworks/current/site-cookbooks`.
+ Si ha habilitado Berkshelf y el repositorio de libros de recetas personalizados contiene un archivo Berksfile, los libros especificados se instalarán en `/opt/aws/opsworks/current/berkshelf-cookbooks`.

[**Los libros de cocina integrados y los libros de cocina personalizados se instalan en cada instancia durante la configuración y no se actualizan posteriormente a menos que ejecutes manualmente el comando Update Custom Cookbooks stack.**](workingstacks-commands.md) OpsWorks Stacks se ejecuta cada vez que ejecuta Chef, `berks install` por lo que tus libros de cocina de Berkshelf se actualizan para cada [evento del ciclo](workingcookbook-events.md) de vida, de acuerdo con las siguientes reglas: 
+ Si tiene una nueva versión del libro de recetas en el repositorio, esta operación actualiza el libro de recetas desde el repositorio.
+ De lo contrario, esta operación actualiza los libros de recetas de Berkshelf desde una caché local.

**nota**  
La operación sobrescribe los libros de recetas de Berkshelf, de manera que si se ha modificado las copias locales de algún libro, se sobrescribirán dichos cambios. Para obtener más información, consulte [Berkshelf](http://berkshelf.com/).

También puede actualizar los libros de recetas de Berkshelf ejecutando el comando de pila **Update Custom Cookbooks**, que actualiza tanto los libros de Berkshelf como los personalizados.

# Implementación de recetas para pilas de Chef 11.4
<a name="workingcookbook-chef11-4"></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 actuales. 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).

**importante**  
No reutilice los nombres de los libros de recetas integrados con libros personalizados o de la comunidad. Los libros de recetas personalizados que tienen el mismo nombre que los libros integrados podrían dar error. [Para ver una lista completa de los libros de cocina integrados que están disponibles con las versiones Chef 11.10, 11.4 y 0.9, consulta el repositorio de libros de cocina opsworks-cookbooks en. GitHub](https://github.com/aws/opsworks-cookbooks)

La principal limitación de las pilas de Chef 11.4 es que las recetas no pueden utilizar la búsqueda ni las bolsas de datos de Chef. Sin embargo, OpsWorks Stacks instala los [atributos de configuración e implementación de la pila](workingcookbook-json.md) en cada instancia que contienen gran parte de la información que se obtendría con la búsqueda, incluida la siguiente:
+ Datos definidos por el usuario desde la consola; por ejemplo, los nombres de aplicación o de host.
+ Los datos de configuración de la pila generados por el servicio OpsWorks Stacks, como las capas, las aplicaciones y las instancias de la pila, y los detalles de cada instancia, como la dirección IP.
+ Atributos JSON personalizados que contienen datos proporcionados por el usuario y que pueden servir prácticamente para la misma finalidad que las bolsas de datos.

OpsWorks Stacks instala una versión actual de los atributos de configuración e implementación de la pila en cada instancia para cada evento del ciclo de vida, antes de iniciar la ejecución del evento en Chef. Los datos están disponibles para las recetas con la sintaxis `node[:attribute][:child_attribute][...]` estándar. Por ejemplo, los atributos de configuración e implementación de la pila incluyen el nombre de la pila, `node[:opsworks][:stack][:name]`.

En el siguiente fragmento de una de las recetas integradas se obtiene el nombre de la pila y se utiliza para crear un archivo de configuración.

```
template '/etc/ganglia/gmetad.conf' do
  source 'gmetad.conf.erb'
  mode '0644'
  variables :stack_name => node[:opsworks][:stack][:name]
  notifies :restart, "service[gmetad]"
end
```

Muchos de los valores de los atributos de implementación y configuración de la pila contienen varios atributos. Debe iterarlos para obtener la información que necesita. En el siguiente ejemplo se muestra un extracto de los atributos de configuración e implementación de la pila, que se representan como objeto JSON para su comodidad. Contiene un atributo `deploy` de nivel superior que contiene, a su vez, un atributo por cada una de las aplicaciones de la pila, a las que se hace referencia con el nombre abreviado de la aplicación.

```
{
  ...
  "deploy": {
    "app1_shortname": {
      "document_root": "app1_root",
      "deploy_to": "deploy_directory",
      "application_type": "php",
      ...
    },
    "app2_shortname": {
      "document_root": "app2_root",
      ...
    }
  },
  ...
}
```

Cada atributo de aplicación contiene un conjunto de atributos que la caracterizan. Por ejemplo, el atributo `deploy_to` representa el directorio de implementación de la aplicación. En el siguiente fragmento se establece el usuario, el grupo y la ruta de cada directorio de implementación de la aplicación.

```
node[:deploy].each do |application, deploy|
  opsworks_deploy_dir do
    user deploy[:user]
    group deploy[:group]
    path deploy[:deploy_to]
  end
  ...
end
```

Para obtener más información sobre los atributos de configuración e implementación de la pila, consulte [Personalizar Stacks OpsWorks](customizing.md). Para obtener más información sobre los directorios de implementación, consulte [Recetas de implementación](create-custom-deploy.md).

Las pilas de Chef 11.4 no admiten bolsas de datos, pero puede agregar datos arbitrarios a los atributos de configuración e implementación de la pila especificando [JSON personalizado](workingstacks-json.md). Las recetas podrán entonces obtener acceso a los datos utilizando la sintaxis de nodo de Chef estándar. Para obtener más información, consulte [Uso de un JSON personalizado](workingcookbook-json-override.md).

Si necesita la funcionalidad de una bolsa de datos cifrados, una opción es almacenar los atributos confidenciales en un lugar seguro, como un bucket privado de Amazon S3. Luego, tus recetas pueden usar el [SDK Ruby de AWS](https://aws.amazon.com/documentation/sdkforruby/), que está instalado en todas las instancias de OpsWorks Stacks, para descargar los datos del bucket. 

**nota**  
Cada instancia de OpsWorks Stacks tiene un perfil de instancia. El [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html) asociado especifica a qué recursos de AWS pueden obtener acceso las aplicaciones que se ejecutan en la instancia. Para que las recetas obtengan acceso a un bucket de Amazon S3, la política del rol debe incluir una declaración similar a la siguiente, que concede permiso para recuperar archivos de un bucket especificado.   

```
"Action": ["s3:GetObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
```
Para obtener más información acerca de los perfiles de instancia, consulte [Especificar los permisos para las aplicaciones que se ejecutan en instancias EC2](opsworks-security-appsrole.md).

# Migración de una pila de Linux existente a una nueva versión de Chef
<a name="workingcookbook-chef11-migrate"></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).

Puedes usar la consola, la API o la CLI de OpsWorks Stacks para migrar tus stacks de Linux a una versión más reciente de Chef. Sin embargo, las recetas podrían necesitar modificaciones para ser compatibles con la versión más reciente. Cuando prepare la migración de una pila, tenga en cuenta lo siguiente.
+ No puedes cambiar las versiones de la pila de OpsWorks Stacks de Chef 11 a Chef 12 editando o clonando la pila. Con el procedimiento que se describe en esta sección no es posible actualizar la versión principal de Chef Para obtener más información sobre la transición de Chef 11.10 a Chef 12, consulte [Implementación de recetas: Chef 12](workingcookbook-chef12-linux.md).
+ La transición de una versión a otra de Chef conlleva una serie de cambios, algunos de ellos importantes.

  Para obtener más información sobre la transición de Chef 0.9 a Chef 11.4, consulte [Migración a una nueva versión de Chef](#workingcookbook-chef11-migrate). Para obtener más información sobre la transición de Chef 11.4 a Chef 11.10, consulte [Implementación de recetas: Chef 11.10](workingcookbook-chef11-10.md). Para obtener más información sobre la transición de Chef 11.10 a Chef 12, consulte [Implementación de recetas: Chef 12](workingcookbook-chef12-linux.md).
+ Las ejecuciones de Chef usan otra versión de Ruby en las pilas de Chef 0.9 y 11.4 (Ruby 1.8.7), las pilas de Chef 11.10 (Ruby 2.0.0) y las pilas de Chef 12 (Ruby 2.1.6).

  Para obtener más información, consulte [Versiones de Ruby](workingcookbook-ruby.md).
+ Las pilas de Chef 11.10 controlan de forma distinta la instalación de los libros de recetas en pilas de Chef 0.9 o de Chef 11.4.

  Esta diferencia podría causar problemas a la hora de migrar a Chef 11.10 pilas que utilizan libros de recetas personalizados. Para obtener más información, consulte [Instalación y prioridad de los libros de recetas](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override).

 A continuación se recomiendan pautas para migrar una pila de Chef a una versión más reciente de Chef:

**Para migrar una pila a una nueva versión de Chef**

1. [Clone la pila de producción](workingstacks-cloning.md). En la página **Clone Stack (Clonar pila)**, haga clic en **Advanced>> (Avanzado>>)** para mostrar la sección **Configuration Management (Administración de configuración)** y cambie **Chef version (Versión de Chef)** a la versión inmediatamente superior.
**nota**  
Si comienza con una pila de Chef 0.9, no puede actualizar directamente a Chef 11.10. Primero debe actualizar a Chef 11.4. Si desea migrar la pila a Chef 11.10 antes de probar sus recetas, espere 20 minutos para ejecutar la actualización y, a continuación, actualice la pila de 11.4 a 11.10.

1. Añada instancias a las capas, y pruebe las aplicaciones y los libros de recetas de la pila clonada en un sistema de pruebas y ensayos. Para obtener más información, consulte [Todo sobre Chef...](https://docs.chef.io/index.html).

1. Cuando los resultados de las pruebas sean satisfactorios, lleve a cabo una de estas operaciones:
   + Si esta es la versión de Chef deseada, puede utilizar la pila clonada como pila de producción o restablecer la versión de Chef en la pila de producción. 
   + Si va a migrar una pila de Chef 0.9 a Chef 11.10 en dos etapas, repita el proceso para migrar la pila de Chef 11.4 a Chef 11.10.

**nota**  
Cuando pruebe las recetas, puede [utilizar SSH para conectarse a](workinginstances-ssh.md) la instancia y, a continuación, utilizar el comando [run\$1command](agent.md) de la [CLI de agente de la instancia](agent-run.md) para ejecutar las recetas asociadas con los diversos eventos del ciclo de vida. La CLI de agente es especialmente útil para probar las recetas de configuración, ya que puede utilizarla incluso si la configuración da error y la instancia no alcanza el estado online. También puede utilizar el [comando de pila Setup](workingstacks-commands.md) para volver a ejecutar las recetas de configuración, pero ese comando solo está disponible si la configuración ha sido correcta y la instancia está online. 

Es posible actualizar a una nueva versión de Chef una pila en ejecución.

**Para actualizar una pila en ejecución a una nueva versión de Chef**

1. [Modifique la pila](workingstacks-edit.md) para cambiar el valor **Chef version (Versión de Chef)** de la pila.

1. Guarda la nueva configuración y espera a que OpsWorks Stacks actualice las instancias, lo que normalmente tarda entre 15 y 20 minutos.

**importante**  
OpsWorks Stacks no sincroniza la actualización de la versión de Chef con los eventos del ciclo de vida. Si desea actualizar la versión de Chef en una pila de producción, debe tener cuidado para asegurarse de que la actualización se complete antes de que se active el siguiente [evento de ciclo de vida](workingcookbook-events.md). Si se produce un evento, normalmente un evento Deploy o Configure, el agente de instancia actualiza los libros de recetas personalizados y ejecuta las recetas asignadas del evento, con independencia de si la actualización de la versión se ha completado o no. No hay modo directo de saber que la actualización de la versión ha finalizado, pero los registros de implementación incluyen la versión de Chef.