amazon-web-services – depuración de recetas de chef en instancias de opsworks: acceso a atributos de bolsa de datos / json personalizados

Pregunta:

Me gustaría usar una sesión de chef-shell en un servidor aws opsworks ec2 para poder probar algún entorno y código específico de instancia que me gustaría incluir en una receta personalizada. Por ejemplo, me gustaría ver la salida de atributos de instancia como nodo [: opsworks] [: instancia] [: capas] o nodo [: opsworks] [: instancia] [: public_dns_name] así como los datos que he pasado a la pila de opsworks usando json personalizado .

Puedo iniciar chef-shell, pero no sé cómo usarlo para acceder a los atributos de opsworks.

Si entro en la instancia de opsworks ec2, puedo acceder a atributos como el nodo ['ec2'] ['instance_id'] pero no a los específicos de opsworks como el nodo ['opsworks'] ['instancia'] ['capas']

root@mongodb1:/opt/aws/opsworks/current/bin# ./chef-shell
loading configuration: none (standalone session)
Session type: standalone
Loading......done.

This is the chef-shell.
 Chef Version: 11.10.4
 http://www.opscode.com/chef
 http://docs.opscode.com/

run `help' for help, `exit' or ^D to quit.

Ohai2u ubuntu@mongodb1.localdomain!
chef > attributes_mode
chef:attributes > node['ec2']['instance_id']
 => "i-c1a98f2c"
chef:attributes > node['opsworks']['instance']['layers']
NoMethodError: undefined method `[]' for nil:NilClass
        from (irb#1):4
chef:attributes >

Respuesta:

El JSON personalizado y el estado de la pila se envían a la instancia en una estructura JSON cuando se produce un evento de OpsWorks (instalación, configuración, implementación, anulación de la implementación, apagado). Si desea que su receta vea el estado actualizado al minuto de OpsWorks Stack, entonces debe ejecutar su receta desde la interfaz de usuario de OpsWorks a través del formulario Implementar -> Ejecutar comando -> Ejecutar recetas .

El JSON enviado por OpsWorks se almacena en la instancia. Si está dispuesto a usar información de estado de pila potencialmente obsoleta que es tan reciente como la última vez que esta instancia ejecutó un evento OpsWorks, puede buscar el archivo *.json más reciente en la instancia en /var/lib/aws/opsworks/chef y analizarlo mediante código Ruby.

También puede utilizar la utilidad opsworks-agent-cli en la instancia para (volver a) ejecutar las recetas desde un evento de OpsWorks directamente desde la línea de comandos en la instancia. OpsWorks eventos Esta utilidad se volverá a ejecutar – no va a iniciar nuevos acontecimientos, y no se tire en una nueva copia del estado de la pila o el JSON personalizada, sino que vuelve a utilizar el .json archivo que OpsWorks enviados a la instancia cuando esa El evento se ejecutó originalmente . Por ejemplo, para volver a ejecutar el evento de setup en su instancia (porque el evento de configuración definitivamente ya se ejecutó):

sudo opsworks-agent-cli run_command setup

Para volver a ejecutar el mismo conjunto de recetas que ejecutó la última vez que ejecutó Execute Recipes desde la interfaz de usuario:

sudo opsworks-agent-cli run_command execute_recipes

Este tipo de apesta, porque primero necesitas ejecutar el evento a través de la interfaz de usuario. Entonces, si desea ejecutar una receta personalizada o si desea actualizar libros de cocina personalizados, primero debe ejecutar ese evento desde la interfaz de usuario. Pero, la segunda, tercera y subsiguientes veces, puede volver a ejecutar esos eventos a través de opsworks-agent-cli .

Consulte aquí para obtener más información sobre opsworks-agent-cli.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım