Ansible версии 1.9.2, запускаю на Ubuntu 14.04.
Созданы роли, которые настраивают уже созданные инстансы Amazon EC2, используя, в том числе, тэги амазона с помощью contrib/inventory/ec2.py.
После создания новых инстансов, хочется в том же плейбуке начать применять к ним готовые роли, но переменных, собранных динамической инвентаризацией ec2.py (например, ec2_tag_*, ec2_key_name) для свежесозданных инстансов ещё нет, а тех, что собирает модуль ec2_facts (переменные ansible_ec2_*), недостаточно.
Попробовал сделать так:
- hosts: localhost
connection: local
gather_facts: False
tasks:
- ec2:
…
register: ec2
- name: Add new instance to host group
add_host: hostname={{ item.public_ip }} groupname=launched
with_items: ec2.instances
- hosts: launched
sudo: yes
remote_user: ubuntu
gather_facts: True
tasks:
- ec2_facts:
- name: Try to run Dynamic inventory
sudo: false
delegate_to: 127.0.0.1
shell: /etc/ansible/hosts/ec2.py --refresh-cache --host {{ ansible_ec2_public_ipv4 }}
register: ec2_new
- set_fact:
_meta.hostvars.[{{ ansible_ec2_public_ipv4 }}]: "{{ ec2_new.stdout | from_json }}"
Хочется, чтобы одни и те же роли подходили как для уже созданных инстансов, так и для создаваемых. Есть какие нибудь мысли, или придётся через shell запускать друг за другом два разных плейбука?