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

La AWS OpsWorks Stacks El 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 tiene preguntas sobre la migración, póngase en contacto con el AWS Support Equipo en AWS Re:post o mediante AWS Premium 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 plano que AWS OpsWorks Stacks se utiliza para crear un conjunto de EC2 instancias de Amazon 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 de Ruby que usa el lenguaje específico del dominio de Chef (DSL) para describir el estado final de la instancia. Con AWS OpsWorks Por lo general, cada receta se asigna 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 (Setup) tiene lugar una vez que una instancia termina de arrancar. AWS OpsWorks A continuación, Stacks ejecuta las recetas de configuración, que suelen incluir 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 IIS instancias.

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 es una introducción muy básica a las recetas, lo suficiente como para mostrarle cómo implementar un libro de cocina para soportar una IIS capa personalizada 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 de Ruby, pero la mayor parte del código, si no todo, está en ChefDSL. DSLSe compone principalmente de un conjunto de recursos, que puede 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 cocina personalizado para la IIS capa personalizada debe realizar las siguientes tareas:

  • Instale la IIS función e inicie el servicio.

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

  • Implementa una aplicación en la instancia, una HTML página sencilla para 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 cocina para que admita una IIS capa 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.

Implemente una receta para instalar y comenzar IIS

IISes una función de Windows, que forma parte de un conjunto de componentes opcionales del sistema que se pueden instalar en Windows Server. Puede hacer que una receta se instale IIS de cualquiera de las siguientes maneras:

nota

powershell_script es uno de los recursos más útiles con las recetas de Windows. Puede usarlo 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 Web Server ()IIS. El libro de recetas de windows se describe más adelante. Para ver un ejemplo de cómo windows_feature utilizar la instalaciónIIS, consulteInstalación de una función 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 Install-WindowsFeature cmdlet 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 protección que garantiza que la receta IIS solo se instale si aún no se ha 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 PowerShell script especificado. Para obtener más información, consulte Ejecución de un PowerShell script de Windows.

service

serviceA administra un servicio, el IIS servicio de servidor web (W3SVC) en este caso. En el ejemplo se utilizan los atributos predeterminados y se especifican dos acciones, :start las cuales se inician y se activanIIS. :enable

nota

Si desea instalar un software que utilice un instalador de paquetes, por ejemploMSI, puede utilizar un windows_package recurso. 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 cocina personalizados están deshabilitados de forma predeterminada, por lo que debes habilitar los libros de cocina personalizados para la pila y proporcionar el repositorio URL y la información relacionada.

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 AWS Management Console y abra la consola Amazon S3 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, registre el archivo comprimido URL para su uso posterior.

    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 este punto, el recorrido solo te ha costado un poco de tiempo; el AWS OpsWorks El servicio Stacks en sí es gratuito. Sin embargo, debe pagar por AWS los recursos que utilice, como el almacenamiento de Amazon S3. En cuanto cargue el archivo, comenzará a incurrir en gastos. Para obtener más información, consulte AWSlos precios.

Para habilitar libros de recetas personalizados para la pila
  1. En el navegador AWS OpsWorks En la consola 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.

    • RepositorioURL: el S3 URL del archivo del libro de cocina que grabaste anteriormente.

  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. Ten en cuenta que AWS OpsWorks Stacks no instala ni actualiza automáticamente los libros de cocina personalizados en las instancias en línea. Puede hacerlo manualmente como se describe más adelante.