настраиваю asg с Ansible и не могу использовать ec2.py для инвентаризации

настраиваю asg с Ansible и не могу использовать ec2.py для инвентаризации

Я создал локальную конфигурацию и группу Amazon Auto-scaling. Используя этот код.

--- 
- 
  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"

Я использую файлы ec2.pyи ec2.iniдля инвентаризации.

Итак, теперь создана локальная конфигурация и группа автоматического масштабирования, и в соответствии с желаемой емкостью, которую мы определили, запущены 2 экземпляра.

Теперь я хочу запустить задачи на этих двух экземплярах.

Для этого я использую этот 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

При запуске этого файла возникает ошибка:

Одна или несколько неопределенных переменных: «ec2_publicIp» не определено

Вопросы:

  1. Я хочу запустить такие задачи, как перезапуск nginx и добавление тега на экземпляр, запущенный группой автоматического масштабирования Amazon.

  2. Я правильно делаю? Похоже, мне даже не нужно добавлять в хост, если я просто хочу запустить какую-то задачу на экземпляре, запущенном asg.

решение1

Над задачей «Добавить экземпляры EP2 в группу хостов» используйте

- debug: var=ec2

чтобы увидеть, что содержит переменная. Если вы посмотрите на переменные для каждого экземпляра, вы, вероятно, обнаружите, что неправильно написали ec2_publicIP или он находится в другом месте в переменной.

решение2

Поскольку я просто хочу запустить команду на экземпляре, запущенном 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

Связанный контент