Ansible EC2模块没有检索实例信息



我编写了一个可视任务来创建ec2实例并将主机添加为动态主机。任务正常工作并且创建了实例,但是我无法检索实例信息。

我的Ansible版本:2.2.0.0/Ubuntu 14.04

我的代码

- name: launch ec2 instance for QA
  local_action:
    module: ec2
    key_name: "{{ ec2_keypair }}"
    group: "{{ ec2_security_group }}"
    instance_type: "{{ ec2_instance_type }}"
    image: "{{ ec2_image }}"
    vpc_subnet_id: "{{ ec2_subnet_ids }}"
    region: "{{ ec2_region }}"
    instance_tags: '{"Name":"{{ec2_tag_Name}}","Type":"{{ec2_tag_Type}}","Environment":"{{ec2_tag_Environment}}"}'
    assign_public_ip: yes
    wait: true
    count: 1
  register: ec2
- debug: var=item
  with_items: ec2.instances
- add_host: name={{ item.public_ip }} >
           groups=dynamically_created_hosts
  with_items: ec2.instances
- name: Wait for the instances to boot by checking the ssh port
  wait_for: host={{item.public_ip}} port=22 delay=60 timeout=320 state=started
  with_items: ec2.instances
我得到的输出是:

任务(QA发射ec2实例 ] **********************************************
更改:[localhost -> localhost]

任务(调试 ] *******************************************************************
Ok: [localhost] => (item=ec2.instances) => {"项":"ec2.instances"}

[add_host

任务 ] ****************************************************************
fatal: [localhost]: FAILED!=> {"failed": true, "msg": "字段'args'具有无效值,其中似乎包含未定义的变量。这个错误是:'unicode object'没有属性'public_ip'nn这个错误似乎已经在'/var/lib/jenkins/jobs/QA/workspace/dynamic-ec2。Yml ':第37行,第7列,但可能在文件的其他地方,这取决于确切的语法问题。有问题的行似乎是:nnn - add_host: name={{item。public_ip}}>n ^ heren我们可能错了,但这个看起来可能是nmissing引号的问题。当模板表达式开始一个值时,总是引用括号。例如:nn with_items:n - {{foo}}nn应该写成:nn with_items:n - "{{foo}}"n"}

还有其他方法吗?

在2.2中不能使用裸变量。自2.0版以来,该语法已被弃用,并向用户发出警告。

您应该阅读粘贴的错误消息,尽管它暗示了不同的原因,但您应该遵循给出的示例:

Should be written as:
  with_items:
    - "{{ foo }}"

在你的情况下,它足以取代所有的with_items: ec2.instances:

with_items: "{{ ec2.instances }}"

最新更新