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.
Simulación de los atributos de configuración e implementación de pila en Vagrant
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
nota
Este tema se aplica únicamente a las instancias de Linux. Test Kitchen aún no es compatible con Windows, por lo que ejecutará todos los ejemplos de Windows en AWS OpsWorks Apila instancias.
AWS OpsWorks Stacks añade los atributos de configuración e implementación de la pila al objeto de nodo de cada instancia de la pila para cada evento del ciclo de vida. Estos atributos proporcionan información sobre la configuración de la pila, incluida la configuración de cada capa y de sus instancias online, la configuración de todas las aplicaciones implementadas, etc. Como estos atributos se encuentran en el objeto de nodo, se puede acceder a ellos mediante cualquier receta; la mayoría de las recetas son AWS OpsWorks Las instancias de Stacks utilizan uno o más de estos atributos.
Una instancia que se ejecuta en una caja de Vagrant no está administrada por AWS OpsWorks Se apilan, por lo que su objeto de nodo no incluye ningún atributo de configuración e implementación de la pila de forma predeterminada. Sin embargo, puede añadir un conjunto de atributos adecuados al entorno de Test Kitchen. Luego, Test Kitchen agrega los atributos al objeto de nodo de la instancia, y tus recetas pueden acceder a los atributos de forma muy similar a como lo harían en una AWS OpsWorks Instancia de Stacks.
Este tema describe cómo obtener una copia de los atributos de configuración e implementación de una pila adecuada, cómo instalarlos en una instancia y cómo obtener acceso a ellos.
nota
Si utilizas Test Kitchen para realizar pruebas con tus recetas, fauxhai
Para configurar el libro de recetas
-
Cree un subdirectorio de
opsworks_cookbooks
llamadoprintjson
y ábralo. -
Inicialice y configure Test Kitchen tal y como se describe en Ejemplo 1: Instalación de paquetes.
-
Añada dos subdirectorios a
printjson
:recipes
yenvironments
.
Podría simular los atributos de configuración e implementación de pila añadiendo un archivo de atributos al libro de recetas con las definiciones adecuadas, pero se prefiere utilizar el entorno de Test Kitchen. Existen dos enfoques básicos:
-
Añadir definiciones de atributo a
.kitchen.yml
.Este enfoque es más útil si solo existen unos pocos atributos. Para obtener más información, consulte kitchen.yml
. -
Definir los atributos en un archivo de entorno y hacer referencia al archivo en
.kitchen.yml
.Este enfoque suele ser preferible para la configuración de la pila y los atributos de despliegue, ya que el archivo de entorno ya está formateadoJSON. Puede obtener una copia de los atributos en el JSON formato adecuado AWS OpsWorks Apila la instancia y simplemente pégala. Todos los ejemplos utilizan un archivo de entorno.
La forma más sencilla de crear una pila de atributos de configuración y despliegue para tu recetario es crear una pila correctamente configurada y copiar los atributos resultantes de una instancia como. JSON Para que el archivo del entorno de Test Kitchen siga siendo manejable, puedes editarlo JSON para que solo tenga los atributos que necesitan tus recetas. Los ejemplos de este capítulo se basan en la pila deIntroducción a las pilas de Linux en Chef 11, que es una pila simple de servidores de PHP aplicaciones con un balanceador de carga, servidores de PHP aplicaciones y un servidor My SQL database.
Para crear una pila, configurar e implementar JSON
-
Cree MyStack como se describe enIntroducción a las pilas de Linux en Chef 11, incluida la implementación de implePHPApp S. Si lo prefiere, puede omitir la segunda instancia de PHP App Server solicitada enPaso 4: Escala MyStack; los ejemplos no utilizan esos atributos.
-
Si aún no lo has hecho, inicia la
php-app1
instancia y, a continuación, inicia sesión con SSH. -
En la ventana del terminal, ejecute el siguiente comando de la CLI del agente:
sudo opsworks-agent-cli get_json
Este comando imprime en JSON formato los atributos de configuración e implementación de la pila más recientes de la instancia en la ventana de terminal.
-
Cópielo en un
.json
archivo y guárdelo en una ubicación conveniente de su estación de trabajo. JSON Los detalles dependen del SSH cliente. Por ejemplo, si utiliza Pu TTY en Windows, puede ejecutar elCopy All to Clipboard
comando, que copia todo el texto de la ventana del terminal en el portapapeles de Windows. A continuación, puede pegar el contenido en un archivo.json
y editarlo para eliminar el texto extraño. -
Edite MyStack JSON según sea necesario. Los atributos de configuración e implementación de pila son numerosos y los libros de recetas suelen utilizar solo un pequeño subconjunto de ellos. Para que el archivo de su entorno sea manejable, puede editarlo JSON para que conserve la estructura original pero contenga solo los atributos que realmente utilizan sus libros de cocina.
En este ejemplo se utiliza una versión muy editada del MyStack JSON que solo incluye dos
['opsworks']['stack']
atributos, y['id]
.['name']
Cree una versión editada de MyStack JSON que se parezca a la siguiente:{ "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }
Para incluirlo JSON en el objeto de nodo de la instancia, debes añadirlo a un entorno de Test Kitchen.
Para añadir los atributos de configuración e implementación de pila al entorno de Test Kitchen
-
Cree un archivo de entorno llamado
test.json
con el siguiente contenido y guárdelo en la carpetaenvironments
del libro de recetas.{ "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }
El archivo de entorno tiene los siguientes elementos:
-
default_attributes
— Los atributos predeterminados en JSON formato.Estos atributos se añaden al objeto de nodo con el tipo de
default
atributo, que es el tipo que utilizan todos los JSON atributos de configuración y despliegue de la pila. En este ejemplo, se utiliza la versión editada de la configuración y el despliegue de la pila JSON que se mostró anteriormente. -
chef_type
: defina este elemento enenvironment
. -
json_class
: defina este elemento enChef::Environment
.
-
-
Edite
.kitchen.yml
para definir el entorno de Test Kitchen tal y como se indica a continuación.--- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:
Puede definir el entorno mediante la adición de los siguientes elementos al
.kitchen.yml
predeterminado creado porkitchen init
.- provisioner
-
Añada los siguientes elementos.
-
name
: defina este elemento enchef_solo
.Para replicar el AWS OpsWorks Apila el entorno más de cerca, puedes usar el modo local del cliente Chef
en lugar de Chef solo. El modo local es una opción del cliente de Chef que utiliza una versión reducida del servidor de Chef (Chef Zero) que se ejecuta de forma local en la instancia en lugar de hacerlo en un servidor remoto. Permite a las recetas utilizar las características del servidor de Chef, como la búsqueda o los contenedores de datos, sin necesidad de conectarse a un servidor remoto. -
environments_path
: el subdirectorio del libro de recetas que contiene el archivo de entorno (./environments
en este ejemplo).
-
- suites:provisioner
-
Añada un elemento
solo_rb
con un elementoenvironment
establecido en el nombre del archivo de entorno menos la extensión .json. Este ejemplo estableceenvironment
entest
.
-
Cree un archivo de receta llamado
default.rb
con el siguiente contenido y guárdelo en el directoriorecipes
del libro de recetas.log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"
Esta receta simplemente registra los dos valores de configuración e implementación de pila que añadió al entorno. Aunque la receta se ejecuta localmente en Virtual Box, se hace referencia a esos atributos con la misma sintaxis de nodos que utilizaría si la receta se ejecutara en un AWS OpsWorks Instancia de Stacks.
-
Ejecute
kitchen converge
. Debería ver algo como lo siguiente en el registro de salida.... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...