Paso 2.3: Implementar un libro de recetas personalizado - AWS OpsWorks

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.

Paso 2.3: Implementar un libro de recetas personalizado

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 o a través de Premium AWS Support.

Aunque una pila es básicamente un contenedor de instancias, las instancias no se añaden directamente a una pila. Añada una o varias capas, cada una de las cuales representa un grupo de instancias relacionadas y, a continuación, añada instancias a las capas.

Una capa es básicamente un modelo que AWS OpsWorks Stacks utiliza para crear un conjunto de instancias de Amazon EC2 con la misma configuración. La instancia parte de una versión base del sistema operativo en la cual la capa de la instancia ejecuta una serie de tareas para implementar dicho plan. Entre esta tareas tenemos:

  • Crear directorios y archivos.

  • Administración de usuarios

  • Instalar y configurar software.

  • Iniciar o detener servidores.

  • Implementar código de aplicaciones y archivos relacionados.

La capas realizan tareas en las instancias ejecutando recetas de Chef (para abreviar, "recetas"). Una receta es una aplicación Ruby que utiliza el lenguaje específico de dominio (DSL) de Chef para describir el estado final de la instancia. Con AWS OpsWorks Stacks, cada receta se suele asignar a uno de los eventos del ciclo de vida de la capa: instalación, configuración, despliegue, anulación de despliegue y cierre. Cuando se produce un evento del ciclo de vida en una instancia, AWS OpsWorks Stacks ejecuta las recetas del evento para realizar las tareas adecuadas. Por ejemplo, el evento de configuración se produce cuando una instancia termina de arrancar. AWS OpsWorks Luego, Stacks ejecuta las recetas de configuración, que normalmente realizan tareas como instalar y configurar el software del servidor e iniciar los servicios relacionados.

AWS OpsWorks Stacks proporciona a cada capa un conjunto de recetas integradas que realizan tareas estándar. También se puede ampliar la funcionalidad de una capa implementando recetas personalizadas para realizar otras tareas y asignándolas a eventos del ciclo de vida de la capa. Las pilas de Windows admiten capas personalizadas. Estas constan de un conjunto mínimo de recetas que realizan solo unas pocas tareas básicas. Para añadir funcionalidad a las instancias de Windows, debe implementar recetas personalizadas que instalen software, implementen aplicaciones, etcétera. En este tema se describe cómo crear una capa personalizada sencilla para admitir instancias de IIS.

Breve introducción a las recetas y los libros de recetas

Una receta define uno o varios aspectos del estado que se espera tenga una instancia: qué directorios debe tener, qué paquetes de software deben instalarse, qué aplicaciones deben implementarse, etcétera. Las recetas se empaquetan en un libro de recetas que, por lo general, contiene una o varias recetas relacionadas y archivos asociados (por ejemplo, plantillas) para crear los archivos de configuración.

Este tema constituye una introducción básica a las recetas, suficiente para mostrar cómo implementar un libro de recetas personalizado que admita una capa de IIS sencilla. Para ver una introducción más completa a los libros de recetas, consulte Cookbooks and Recipes. Para ver un tutorial detallado de introducción a la implementación de los libros de recetas, con varios temas específicos de Windows, consulte Cookbooks 101.

Las recetas de Chef son técnicamente aplicaciones Ruby, pero la mayor parte del código, por no decir todo el código, está en DSL de Chef. El lenguaje DSL consiste, principalmente, en un conjunto de recursos que se pueden utilizar para especificar de forma declarativa un aspecto del estado de las instancias. Por ejemplo, un recurso directory define un directorio que debe añadirse al sistema. En el siguiente ejemplo se define un directorio C:\data con derechos de control total que pertenece al usuario especificado y que no hereda los derechos del directorio principal.

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Cuando Chef ejecuta una receta, ejecuta cada recurso pasando los datos a un proveedor asociado, un objeto Ruby que administra los detalles de la modificación del estado de la instancia. En este caso, el proveedor crea un directorio nuevo con la configuración especificada.

El libro de recetas personalizado para la capa de IIS personalizada debe llevar a cabo las tareas siguientes:

  • Instalar la característica IIS e iniciar el servicio.

    Esta tarea se realiza durante la configuración, generalmente, justo después de que termine de arrancar la instancia.

  • Implementar una aplicación en la instancia, una página HTML sencilla en este ejemplo.

    Esta tarea se suele realizar durante la instalación. Sin embargo, lo habitual es que las aplicaciones se actualicen con regularidad, de forma que también deberá implementar actualizaciones cuando la instancia esté online.

Podría tener una única receta que realizara todas estas tareas. No obstante, el método preferido es disponer de recetas independientes para las tareas de instalación e implementación. De esta forma, es posible implementar las actualizaciones de las aplicaciones en cualquier momento, sin necesidad de ejecutar código de instalación. A continuación se describe cómo configurar un libro de recetas personalizado para admitir una capa de IIS personalizada. En temas posteriores se indicará cómo implementar las recetas.

Primeros pasos
  1. Cree un directorio denominado iis-cookbook en una ubicación cómoda dentro de la estación de trabajo.

  2. Añada un archivo metadata.rb a iis-cookbook con el contenido siguiente.

    name "iis-cookbook" version "0.1.0"

    En este ejemplo se utiliza un archivo metadata.rb mínimo. Para obtener más información sobre cómo usar este archivo, consulte metadata.rb.

  3. Añada un directorio recipes a iis-cookbook.

    Este directorio, que debe llamarse recipes, contiene las recetas del libro de recetas.

Por lo general, los libros de recetas contienen otros directorios más. Por ejemplo, si en una receta se utiliza una plantilla para crear un archivo de configuración, la plantilla se encuentra, normalmente, en el directorio templates\default. El libro de recetas de este ejemplo consta únicamente de recetas; por consiguiente, no necesita otros directorios. Además, en este ejemplo se emplea un único libro de recetas, pero puede utilizar tantos como precise; en los proyectos complejos, es preferible disponer de varios. Por ejemplo, podría tener libros de recetas independientes para las tareas de instalación e implementación. Para obtener más ejemplos sobre libros de recetas, consulte Cookbooks and Recipes.

Implementar una receta para instalar e iniciar IIS

IIS es una característica de Windows entre una serie de componentes opcionales del sistema que se pueden instalar en Windows Server. Puede hacer que receta instale de IIS de una de las formas siguientes:

nota

powershell_script es uno de los recursos más útiles con las recetas de Windows. Puedes usarla para realizar diversas tareas en una instancia mediante la ejecución de un PowerShell script o un cmdlet. Es especialmente útil para aquellas tareas no compatibles con recursos de Chef.

En este ejemplo, se ejecuta un PowerShell script para instalar e iniciar el servidor web (IIS). El libro de recetas de windows se describe más adelante. Si desea ver un ejemplo sobre el uso de windows_feature para instalar IIS, consulte Instalación de una característica de Windows: IIS.

Añada una receta llamada install.rb con el contenido siguiente al directorio recipes del libro de recetas.

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

La receta contiene dos recursos.

powershell_script

powershell_scriptejecuta el PowerShell script o cmdlet especificado. El ejemplo tiene la configuración de atributos siguiente:

  • code— Los PowerShell cmdlets que se van a ejecutar.

    En este ejemplo se ejecuta un cmdlet Install-WindowsFeature que instala Web Server (IIS). En general, el atributo code admite cualquier número de líneas, de manera que puede ejecutar tantos cmdlets como necesite.

  • not-if: un atributo de guardia que garantiza que la receta instala IIS si no está instalado.

    En general se prefieren recetas idempotentes que no pierdan tiempo realizando la misma tarea más de una vez.

Cada recurso tiene una acción que especifica la acción que va a emprender el proveedor. No hay ninguna acción explícita para este ejemplo, por lo que el proveedor realiza la :run acción predeterminada, que ejecuta el script especificado PowerShell . Para obtener más información, consulte Ejecución de un PowerShell script de Windows.

service

Un service administra un servicio; en este caso, el servicio de Web Server IIS (W3SVC). En el ejemplo se utilizan atributos predeterminados y se especifican dos acciones, :start y :enable, que inician y habilitan IIS.

nota

Si desea instalar software que utiliza un instalador de paquete, como MSI, puede usar un recurso windows_package. Para obtener más información, consulte Instalación de un paquete.

Habilitar el libro de recetas personalizado

AWS OpsWorks Stacks ejecuta recetas desde una caché local en cada instancia. Para ejecutar recetas personalizadas, haga lo siguiente:

  • Guarde el libro de recetas en un repositorio remoto.

    AWS OpsWorks Stacks descarga los libros de cocina de este repositorio a la caché local de cada instancia.

  • Modifique la pila para habilitar los libros de recetas personalizados.

    Los libros de recetas personalizados están desactivados de forma predeterminada, de forma que debe habilitarlos para la pila y proporcionar la dirección URL y la información relacionada del repositorio.

AWS OpsWorks Stacks admite archivos S3 y repositorios Git para libros de cocina personalizados; este ejemplo usa un archivo S3. Para obtener más información, consulte Repositorios de libros de recetas.

Para utilizar un archivo S3
  1. Cree un archivo .zip del directorio iis-cookbook.

    AWS OpsWorks Stacks también admite archivos .tgz (tar comprimido con gzip) para las pilas de Windows.

  2. Cargue el archivo en un bucket de S3 en la región Oeste de EE. UU. (Norte de California) y haga público el archivo. También puede utilizar archivos S3 privados, pero para este ejemplo son suficientes los archivos públicos, que son un poco más sencillos de utilizar.

    1. Inicie sesión en la consola de Amazon S3 AWS Management Console y ábrala en https://console.aws.amazon.com/s3/.

    2. Si aún no dispone de un bucket en us-west-1, seleccione Crear bucket y cree un bucket en la región Oeste de EE. UU. (Norte de California).

    3. En la lista de buckets, elija el nombre del bucket en el que desea cargar el archivo y, a continuación, elija Upload (Cargar).

    4. Seleccione Add Files (Añadir archivos).

    5. Seleccione el archivo que desea cargar y, a continuación, elija Open (Abrir).

    6. En la parte inferior del cuadro de diálogo Upload - Select Files and Folders (Cargar - Seleccionar archivos y carpetas), elija Set Details (Establecer detalles).

    7. En la parte inferior del cuadro de diálogo Set Details (Establecer detalles), elija Set Permissions (Establecer permisos).

    8. En el cuadro de diálogo Set permissions (Establecer permisos), elija Make everything public (Publicar todo).

    9. En la parte inferior del cuadro de diálogo Set Permissions (Establecer permisos), elija Start Upload (Iniciar carga). Cuando termine la carga, el archivo iis-cookbook.zip aparece en el bucket.

    10. Elija el bucket y, a continuación, elija la pestaña Properties (Propiedades) del bucket. Junto a Link (Enlace), registre la URL del archivo de almacenamiento para usarlo después.

    Para obtener más información sobre la carga de archivos en un bucket de Amazon S3, consulte ¿Cómo puedo cargar archivos y carpetas en un bucket de S3? en la Guía del usuario de la consola de Amazon S3.

importante

Hasta ahora, el tutorial le ha costado solo un poco tiempo, ya que el servicio AWS OpsWorks Stacks es gratuito. No obstante, deberá pagar por los recursos de AWS que utilice; por ejemplo, el almacenamiento de Amazon S3. En cuanto cargue el archivo, comenzará a incurrir en gastos. Para obtener más información, consulte Precios de AWS.

Para habilitar libros de recetas personalizados para la pila
  1. En la consola de AWS OpsWorks Stacks, selecciona Stack en el panel de navegación y, a continuación, selecciona Stack Settings en la esquina superior derecha.

  2. En la parte superior derecha de la página Settings (Configuración), elija Edit (Editar).

  3. En la página Settings (Configuración), establezca Use custom Chef cookbooks (Usar libros de recetas de Chef personalizadas) en Yes (Sí) e introduzca la información siguiente:

    • Tipo de repositorio: Archivo S3.

    • URL del repositorio: la URL de S3 del archivo de almacenamiento del libro de recetas que ha registrado previamente.

  4. Elija Save (Guardar) para actualizar la configuración de la pila.

AWS OpsWorks Stacks instala tu libro de cocina personalizado en todas las instancias nuevas. Tenga en cuenta que AWS OpsWorks Stacks no instala ni actualiza automáticamente los libros de recetas personalizados en las instancias online. Puede hacerlo manualmente como se describe más adelante.