Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 Ansible-如何循环并获取新EC2实例的属性_Amazon Ec2_Ansible_Ansible Playbook - Fatal编程技术网

Amazon ec2 Ansible-如何循环并获取新EC2实例的属性

Amazon ec2 Ansible-如何循环并获取新EC2实例的属性,amazon-ec2,ansible,ansible-playbook,Amazon Ec2,Ansible,Ansible Playbook,我正在使用这个剧本创建一组新的EC2实例 - 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

我正在使用这个剧本创建一组新的EC2实例

- 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 }}"
现在,我需要为每台新机器创建一个SSL/TLS证书。为此,我需要他们的私有IP。然而,我不知道如何访问我在上一个剧本中注册的“{ec2.instances}}”

我在同一个剧本里试过这样做

- 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
但是没有成功。有没有办法在同一个剧本中,但在不同的剧本中使用“{ec2.instances}}”项目

--编辑--

根据Theo的建议,我使用

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

了解返回结构(缺少文档)的最佳方法是将其包装到调试任务中

  - name: Debug ec2 variable
    debug: var=ec2.instances
从那里,按照结构得到你所寻找的变量

此外(遵循幂等模型),您可以使用该模块从实例中获取事实,并在将来的播放/任务中调用它们


有关调用已注册变量的更多信息,请参阅。

了解返回结构的最佳方法(缺少文档)是将其包装到调试任务中

  - name: Debug ec2 variable
    debug: var=ec2.instances
从那里,按照结构得到你所寻找的变量

此外(遵循幂等模型),您可以使用该模块从实例中获取事实,并在将来的播放/任务中调用它们

有关调用已注册变量的更多信息,请参阅