configurando asg com Ansible e não é possível usar ec2.py para inventário

configurando asg com Ansible e não é possível usar ec2.py para inventário

Eu criei a configuração local e o grupo Amazon Auto-scaling. 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"

Estou usando ec2.pye ec2.iniarquivos para inventário.

Então agora a configuração local e o grupo de escalonamento automático criados e de acordo com a capacidade desejada que definimos, 2 instâncias são lançadas.

Agora quero executar tarefas nessas duas instâncias.

Para isso estou usando este arquivo 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

Quando executo este arquivo, recebo o erro:

Uma ou mais variáveis ​​indefinidas: 'ec2_publicIp' é indefinido

Questões:

  1. Quero executar tarefas como reiniciar o nginx e adicionar tag na instância iniciada pelo grupo de escalonamento automático da Amazon.

  2. Estou fazendo certo? Parece que nem preciso adicionar ao host se quiser apenas executar alguma tarefa na instância iniciada pelo asg.

Responder1

Acima da tarefa 'Adicionar instâncias EP2 ao grupo host', use

- debug: var=ec2

para ver o que a variável contém. Se você observar as variáveis ​​de cada instância, provavelmente descobrirá que escreveu ec2_publicIP errado ou que está em um local diferente na variável.

Responder2

Como eu só quero executar o comando na instância iniciada pelo 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

informação relacionada