configurando asg con Ansible y no puedo usar ec2.py para el inventario

configurando asg con Ansible y no puedo usar ec2.py para el inventario

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.pyy ec2.inipara 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:

  1. Quiero ejecutar tareas como reiniciar nginx y agregar una etiqueta en la instancia lanzada por el grupo de escalado automático de Amazon.

  2. ¿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

información relacionada