Una breve digresión: libros de cocina, recetas y AWS OpsWorks Atributos de pilas - 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.

Una breve digresión: libros de cocina, recetas y AWS OpsWorks Atributos de pilas

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 actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tiene alguna duda sobre la migración, póngase en contacto con el AWS Support Equipo en AWS Re:post o mediante AWS Premium Support.

Ahora tiene servidores de aplicaciones y de bases de datos, pero no están totalmente preparados para usarlos. Tendrá que configurar la base de datos y los valores de configuración de conexión para la aplicación. AWS OpsWorks Stacks no gestiona estas tareas de forma automática, pero sí admite libros de recetas, recetas y atributos dinámicos de Chef. Puede implementar un par de recetas, una para configurar la base de datos y otra para configurar los ajustes de conexión de la aplicación, y tener AWS OpsWorks Stacks las ejecuta por ti.

El libro de recetas phpapp, que contiene las recetas necesarias, ya está implementado y listo para su uso; puede pasar a Paso 3.3: Agregue los libros de cocina personalizados a MyStack si lo prefiere. Si desea profundizar en estos aspectos, en esta sección se proporciona información de referencia sobre los libros de recetas y las recetas, así como se describe cómo funcionan. Para ver el libro de recetas, vaya al libro de recetas phpapp.

Recetas y atributos

Una receta de Chef es básicamente una aplicación Ruby especializada que realiza tareas en una instancia, como instalar paquetes, crear archivos de configuración, ejecutar comandos de shell, etcétera. Los grupos de recetas relacionadas se organizan en libros de recetas, que también contienen archivos de apoyo, como son las plantillas para crear archivos de configuración.

AWS OpsWorks Stacks tiene un conjunto de libros de cocina que admiten las capas integradas. También puede crear libros de recetas personalizados con sus propias recetas para llevar a cabo tareas personalizadas en las instancias. En este tema se ofrece una breve introducción a las recetas y se muestra cómo utilizarlas para configurar la base de datos, así como la conexión de la aplicación. Para obtener más información acerca de los libros de recetas y las recetas, consulte Cookbooks and Recipes o Personalización AWS OpsWorks Pilas.

Las recetas suelen depender de los atributos de Chef para los datos de entrada:

  • Algunos de estos atributos los define Chef y proporcionan información básica sobre la instancia, como, por ejemplo, el sistema operativo.

  • AWS OpsWorks Stacks define un conjunto de atributos que contienen información sobre la pila (por ejemplo, las configuraciones de las capas) y sobre las aplicaciones implementadas (como el repositorio de aplicaciones).

    Puedes añadir atributos personalizados a este conjunto asignándolos a la pila o implementación. JSON

  • En los libros de recetas también se pueden definir atributos específicos del libro.

    Los atributos del libro de recetas phpapp se definen en attributes/default.rb.

Para obtener una lista completa de AWS OpsWorks Atributos de pilas, consulte Atributos de configuración e implementación de pila: Linux y. Atributos integrados de los libros de recetas Para obtener más información, consulte Anulación de atributos.

Los atributos se organizan en una estructura jerárquica, que se puede representar como un JSON objeto.

Estos datos se incorporan en la aplicación con la sintaxis de nodos de Chef, así:

[:deploy][:simplephpapp][:database][:username]

El nodo deploy tiene un único nodo de aplicación, simplephpapp, que contiene información sobre la base de datos, el repositorio Git, etcétera. El ejemplo representa el valor del nombre de usuario de la base de datos, que se resuelve como root.

Configurar la base de datos

Las recetas de configuración integradas en My SQL Layer crean automáticamente una base de datos para la aplicación nombrada con el nombre abreviado de la aplicación, por lo que, para este ejemplo, ya tiene una base de datos llamada simplephpapp. No obstante, debe terminar la configuración creando una tabla para que la aplicación almacene los datos. Puedes crear la tabla manualmente, pero un mejor enfoque es implementar una receta personalizada para gestionar la tarea y tener AWS OpsWorks Stacks lo ejecuta por ti. En esta sección se describe cómo se implementa la receta dbsetup.rb. El procedimiento para tener AWS OpsWorks Las pilas ejecutan la receta que se describe más adelante.

Para ver la receta en el repositorio, vaya a dbsetup.rb. En el siguiente ejemplo se muestra el código de dbsetup.rb.

execute es un recurso de Chef que ejecuta un comando especificado. En este caso, es un SQL comando Mi el que crea una tabla. La directiva not_if garantiza que el comando no se ejecute si la tabla especificada ya existe. Para obtener más información acerca de los recursos de Chef, consulte la página sobre recursos y proveedores.

La receta inserta los valores de atributo en la cadena de comandos utilizando la sintaxis de nodo que se ha comentado anteriormente. Por ejemplo, lo siguiente inserta el nombre de usuario de la base de datos.

#{deploy[:database][:username]}

Vamos a descifrar este código un tanto críptico:

  • En cada iteración, deploy está establecido en el nodo actual de la aplicación, por lo que se resuelve como [:deploy][:app_name]. En este ejemplo, se resuelve como [:deploy][:simplephpapp].

  • Utilizando los valores de los atributos de implementación mostrados anteriormente, el nodo completo se resuelve como root.

  • Encapsule el nodo entre # {} para insertarlo en una cadena.

El resto de los nodos se resuelven, en su mayoría, de forma similar. La excepción es #{node[:phpapp][:dbtable]}, que lo define el archivo de atributos del libro de recetas personalizado y se resuelve como el nombre de la tabla, urler. Por lo tanto, el comando real que se ejecuta en la SQL instancia My es:

"/usr/bin/mysql -uroot -pvjud1hw5v8 simplephpapp -e'CREATE TABLE urler( id INT UNSIGNED NOT NULL AUTO_INCREMENT, author VARCHAR(63) NOT NULL, message TEXT, PRIMARY KEY (id))' "

Este comando crea una tabla llamada urler, con campos de ID, autor y mensaje, y donde se utilizan las credenciales y el nombre de la base de datos obtenidos de los atributos de implementación.

Conectar la aplicación con la base de datos

La segunda parte del rompecabezas es la aplicación, que necesita información de conexión, por ejemplo, la contraseña de la base de datos, para obtener acceso a la tabla. implePHPApp Efectivamente, S solo tiene un archivo de trabajoapp.php; todo index.php lo que tiene es cargarapp.php.

app.php incluye db-connect.php, que gestiona la conexión con la base de datos, pero ese archivo no está en el repositorio. No puede crear db-connect.php con antelación, ya que define la base de datos en función de la instancia concreta. En lugar de esto, la receta appsetup.rb genera db-connect.php utilizando los datos de conexión de los atributos de implementación.

Para ver la receta en el repositorio, vaya a appsetup.rb. En el siguiente ejemplo se muestra el código de appsetup.rb.

Al igual que dbsetup.rb, appsetup.rb itera el procedimiento en las aplicaciones del nodo deploy (de nuevo, solo simplephpapp). Ejecuta un bloque de código con un recurso script y un recurso template.

El script recurso instala Composer, un administrador de dependencias para PHP aplicaciones. A continuación, ejecuta el comando install de Composer para instalar las dependencias de la aplicación de muestra en el directorio raíz de la aplicación.

El recurso template genera db-connect.php y lo pone en /srv/www/simplephpapp/current. Tenga en cuenta lo siguiente:

  • La receta utiliza una declaración condicional para especificar el propietario del archivo, que depende del sistema operativo de la instancia.

  • La directiva only_if indica a Chef que genere la plantilla únicamente si el directorio especificado ya existe.

Un recurso template opera en una plantilla que tiene básicamente el mismo contenido y estructura de archivos que el archivo asociado, pero incluye marcadores de posición para varios valores de datos. El parámetro source especifica la plantilla, db-connect.php.erb, que está en el directorio templates/default del libro de recetas phpapp y contiene lo siguiente:

Cuando Chef procesa la plantilla, sustituye los marcadores de posición <%= => por el valor de las variables correspondientes en el recurso de plantilla, que a su vez, se extraen de los atributos de implementación. De este modo, el archivo generado es: