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
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
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.
Temas
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
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
-
Cree un directorio denominado
iis-cookbook
en una ubicación cómoda dentro de la estación de trabajo. -
Añada un archivo
metadata.rb
aiis-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. -
Añada un directorio
recipes
aiis-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:
-
Utilizando un recurso
powershell_script
para ejecutar el cmdlet Install-WindowsFeature
. -
Utilizando el recurso del libro de recetas de Windows
windows_feature
de Chef.El
windows
manual contiene un conjunto de recursos cuyos proveedores utilizan Deployment Image Servicing and Management(DISM) para realizar diversas tareas en instancias de Windows, incluida la instalación de funciones.
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_script
ejecuta 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 atributocode
admite cualquier número de líneas, de manera que puede ejecutar tantos cmdlets como necesite. -
not-if
— Un atributo de protecciónque 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
-
service
A 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
-
Cree un archivo
.zip
del directorioiis-cookbook
.AWS OpsWorks Stacks también admite archivos
.tgz
(tar comprimido con gzip) para las pilas de Windows. -
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.
Inicie sesión en AWS Management Console y abra la consola Amazon S3 en https://console.aws.amazon.com/s3/
. -
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). -
En la lista de buckets, elija el nombre del bucket en el que desea cargar el archivo y, a continuación, elija Upload (Cargar).
-
Seleccione Add Files (Añadir archivos).
-
Seleccione el archivo que desea cargar y, a continuación, elija Open (Abrir).
-
En la parte inferior del cuadro de diálogo Upload - Select Files and Folders (Cargar - Seleccionar archivos y carpetas), elija Set Details (Establecer detalles).
-
En la parte inferior del cuadro de diálogo Set Details (Establecer detalles), elija Set Permissions (Establecer permisos).
-
En el cuadro de diálogo Set permissions (Establecer permisos), elija Make everything public (Publicar todo).
-
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. -
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
-
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.
-
En la parte superior derecha de la página Settings (Configuración), elija Edit (Editar).
-
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.
-
-
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.