Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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 web services Ansible EC2模块未检索实例信息_Amazon Web Services_Amazon Ec2_Ansible_Ansible Playbook - Fatal编程技术网

Amazon web services Ansible EC2模块未检索实例信息

Amazon web services Ansible EC2模块未检索实例信息,amazon-web-services,amazon-ec2,ansible,ansible-playbook,Amazon Web Services,Amazon Ec2,Ansible,Ansible Playbook,我编写了一个ansible任务来创建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

我编写了一个ansible任务来创建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]

任务[调试]************************************************************************************************************************************
确定:[localhost]=>(item=ec2.instances)=>{ “项”:“ec2.实例” }

任务[添加主机]**************************************************************************************************************************
致命:[localhost]:失败!=>{“failed”:true,“msg”:"字段“args”有一个无效值,该值似乎包含一个未定义的变量。错误是:“unicode对象”没有属性“public\u ip”\n\n错误似乎出现在“/var/lib/jenkins/jobs/QA/workspace/dynamic-ec2.yml”:第37行第7列,但根据确切的语法问题,可能\n出现在文件的其他位置。\n\n offe结束行似乎是:\n\n\n-add_host:name={{item.public_ip}}>\n^here\n我们可能是错误的,但这一行看起来可能是缺少引号的问题。当模板表达式括号启动值时,\n始终引用它们。例如:\n\n with_items:\n-{foo}\n\n应写为:\n\n和\u项:\n-\“{{foo}}\”\n}


还有其他方法吗?

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

您应该阅读已粘贴的错误消息,尽管它表明了不同的原因,但您应该遵循以下示例:

在您的情况下,用以下项替换所有
:ec2.实例

with_items: "{{ ec2.instances }}"

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

您应该阅读已粘贴的错误消息,尽管它表明了不同的原因,但您应该遵循以下示例:

在您的情况下,用以下项替换所有
:ec2.实例

with_items: "{{ ec2.instances }}"

@谢谢你的建议,它非常有效。@tehraf谢谢你的建议,它非常有效。