
He creado una configuración local y un grupo de escalado automático de Amazon. Usando este código.
---
-
local_action:
image_id: ami-61f9324
instance_type: t2.micro
module: ec2_lc
name: nice-lc
region: us-west-2
security_groups: launch-wizard-1
name: "Create lc"
-
local_action:
desired_capacity: 2
health_check_period: 5
health_check_type: ELB
launch_config_name: nice-lc
load_balancers: nice-lb1
max_size: 10
min_size: 2
module: ec2_asg
name: nice-asg
region: us-west-2
name: "Create asg"
Estoy usando archivos ec2.py
y ec2.ini
para inventario.
Ahora se crean la configuración local y el grupo de escalado automático y, según la capacidad deseada que hemos definido, se lanzan 2 instancias.
Ahora quiero ejecutar tareas en esas 2 instancias.
Para eso estoy usando este archivo yaml.
---
- name: Example of provisioning servers
hosts: 127.0.0.1
connection: local
tasks:
- name: Add EP2 instances to host group
local_action: add_host hostname={{ ec2_publicIp }} groupname=launch-wizard-1
with_items: ec2.instances
- name: Add tag to instances
local_action: ec2_tag resource={{ item.id }} region=us-west-2 state=present
with_items: ec2.instances
args:
tags:
Name: nice-ec2
- name: Wait for SSH to be available
pause: minutes=1
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted
Cuando ejecuto este archivo, aparece el error:
Una o más variables no definidas: 'ec2_publicIp' no está definida
Preguntas:
Quiero ejecutar tareas como reiniciar nginx y agregar una etiqueta en la instancia lanzada por el grupo de escalado automático de Amazon.
¿Estoy haciendo bien? Parece que ni siquiera necesito agregarlo al host si solo quiero ejecutar alguna tarea en la instancia iniciada por asg.
Respuesta1
Encima de la tarea 'Agregar instancias EP2 al grupo de hosts', use
- debug: var=ec2
para ver qué contiene la variable. Si observa las variables para cada instancia, probablemente encontrará que ha escrito mal ec2_publicIP o que está en una ubicación diferente en la variable.
Respuesta2
Como solo quiero ejecutar el comando en la instancia iniciada por asg.
---
# I have removed that code and just using this.
# This works with instance launched by asg.
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted