2016-03-02 7 views
3

Я использую ec2_remote_facts для поиска фактов ec2 экземпляра на основе тегов.Ansible ec2_remote_facts

- name: Search ec2 
    ec2_remote_facts: 
    filters: 
    "tag:Name": "{{hostname}}" 
    aws_access_key: "{{aws_access_key}}" 
    aws_secret_key: "{{aws_secret_key}}" 
    region: "{{aws_region}}" 
    register: ec2_info 

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

Может кто-то помочь в поиске или извлечении идентификатора экземпляра.

Спасибо,

ответ

3

Вы должны использовать свою зарегистрированную переменную «ec2_info»:

- debug: var=ec2_info 
- debug: var=item 
    with_items: ec2_info.instance_ids 
# register new variable 
- set_fact: 
    instance_ids: ec2_info.instance_ids 
- add_host: hostname={{ item.public_ip }} groupname=ec2hosts 
    with_items: ec2_info.instances 

- name: wait for instances to listen on port:22 
    wait_for: 
    state=started 
    host={{ item.public_dns_name }} 
    port=22 
    with_items: ec2_info.instances 

# Connect to the node and gather facts, 
# including the instance-id. These facts 
# are added to inventory hostvars for the 
# duration of the playbook's execution 

- hosts: ec2hosts 
    gather_facts: True 
    user: ec2-user 
    sudo: True 
    tasks: 
# fetch instance data from the metadata servers in ec2 
- ec2_facts: 

# show all known facts for this host 
- debug: var=hostvars[inventory_hostname] 

# just show the instance-id 
- debug: msg="{{ hostvars[inventory_hostname]['ansible_ec2_instance-id'] }}" 
+0

Этого код отрезала испортили отступы и может быть запутанной для новичков. Первая часть - это список задач (без заголовка воспроизведения, например, 'hosts' и т. Д.), А вторая часть имеет заголовок воспроизведения, но отступы заданий неверны. Я советую разбить этот блок кода на два - первый будет списком задач из какой-то более крупной пьесы, а второй будет игрой с исправленными отступлением задач. –

+0

См. Также флаг «-v» для подробного вывода, чтобы увидеть структуру данных, которая будет храниться в регистре. - Совсем проще, чем добавлять операторы отладки, если вам нужно только знать структуру возвращаемого типа. – Erich

Смежные вопросы