2016-06-07 16 views
0

ich eine Reihe von neuen EC2-Instanzen zu schaffen mit diesem Spielansible - Wie Schleife und bekommen Attribute von neuen EC2-Instanzen

- hosts: localhost 
    connection: local 
    gather_facts: False 
    tasks: 
    - name: Provision a set of instances 
     ec2: 
     assign_public_ip: yes 
     aws_access_key: XXXXXXXXXX 
     aws_secret_key: XXXXXXXXXX 
     group_id: XXXXXXXXXX 
     instance_type: t2.micro 
     image: ami-32a85152 
     vpc_subnet_id: XXXXXXXXXX 
     region: XXXXXXXXXX 
     user_data: "{{ lookup('file', '/SOME_PATH/cloud-config.yaml') }}" 
     wait: true 
     exact_count: 1 
     count_tag: 
      Name: Demo 
     instance_tags: 
      Name: Demo 
     register: ec2 
    - name: Add new CoreOS machines to coreos-launched group 
     add_host: hostname="{{ item.public_ip }}" groups=coreos-launched 
     with_items: "{{ ec2.instances }}" 
    - name: Wait for SSH to come up 
     wait_for: host="{{ item.public_dns_name }}" port=22 delay=60 timeout=320 
     with_items: "{{ ec2.instances }}" 

Nun, ich brauche eine SSL/TLS-Zertifikat für jeden von denen zu schaffen neue Maschinen. Um dies zu tun, benötige ich ihre private IP. Ich weiß jedoch nicht, wie ich auf die "{{ec2.instances}}" zugreifen kann, die ich im vorherigen Spiel registriert habe.

Ich habe versucht, etwas in der gleichen Textbuch, so etwas wie dieses

- hosts: coreos-launched 
    gather_facts: False 
    tasks: 
    - name: Find the current machine IP addresse 
     command: echo "{{ item.private_ip }}" > /tmp/private_ip 
     with_items: "{{ ec2.instances }}" 
     sudo: yes 

Aber ohne Erfolg zu tun. Gibt es eine Möglichkeit, die Elemente "{{ec2.instances}}" in einem Spielbuch, aber in einem anderen Spiel zu verwenden?

- EDIT -

Nach Theo Ratschläge, leite ich die Instanzen bekommen Attribute mit

- name: Gather current facts 
    action: ec2_facts 
    register: ec2_facts 
- name: Use the current facts 
    command: echo "{{ ec2_facts.ansible_facts.ansible_ec2_local_ipv4 }}" 
    with_items: "{{ ec2_facts }}" 

Antwort

1

Der beste Weg, über eine Rückkehr Struktur (kurz der Dokumentation) zu lernen, ist zu wickeln es in einer Debug-Task.

- name: Debug ec2 variable 
    debug: var=ec2.instances 

Von dort folgen Sie der Struktur, um die Variable zu erhalten, die Sie suchen.

Auch (nach dem Idempotenzmodell) können Sie das Modul ec2_remote_facts verwenden, um die Fakten aus den Instanzen abzurufen und sie in künftigen Spielen/Aufgaben aufzurufen.

Weitere Informationen zum Aufrufen registrierter Variablen finden Sie unter Variables -- Ansible Documentation.

Verwandte Themen