使用Ansible创建AMI后获取AMI ID

3

我正在使用Ansible创建一个EC2实例,然后从实例创建一个AMI。我确定我错过了某些步骤,请问如何获得新创建的AMI的DI?我尝试了以下操作:

tasks:
- name: create an ami in us-east-1
  ec2_ami: wait=yes
           aws_access_key={{ ec2_access_key }}
           aws_secret_key={{ ec2_secret_key }}
           instance_id={{ item }}
           region={{ region1 }}
           name=data-mgmt-qa-006
  with_items: hostvars[inventory_hostname]['ansible_ec2_instance_id']
  register: ec2_ami_info

- debug: var=item
  with_items: ec2_ami_info.image_id 

and:

tasks:
- name: create an ami in us-east-1
  ec2_ami: wait=yes
           aws_access_key={{ ec2_access_key }}
           aws_secret_key={{ ec2_secret_key }}
           instance_id={{ item }}
           region={{ region1 }}
           name=data-mgmt-qa-006
  with_items: hostvars[inventory_hostname]['ansible_ec2_instance_id']
  register: instance

- debug: var=item
  with_items: instance.image_id

后面的 'register' 是从文档中复制来的,但是我显然无法正确使用 with_items。

AMI 创建正常。如有建议,将不胜感激。

2个回答

7

执行debug var=instance命令,得到以下结果:

TASK: [debug var=instance] **************************************************** 
ok: [54.90.128.104] => {
"instance": {
    "changed": true, 
    "msg": "All items completed", 
    "results": [
        {
            "changed": true, 
            "image_id": "ami-be14b9d6", 
            "invocation": {
                "module_args": "wait=yes aws_access_key=**** aws_secret_key=**** instance_id=i-393284d2 region=us-east-1 name=blah", 
                "module_name": "ec2_ami"
            }, 
            "item": "i-393284d2", 
            "msg": "AMI creation operation complete", 
            "state": "available"
        }
    ]
}
}

鉴于以下事实:

- debug: var=instance.results[0].image_id

给出了正确的结果。


2

ec2_ami任务是正确的,但你调用debug模块的方式是错误的。尝试使用以下命令:

- debug: var=instance.image_id

或者,另外一种选择是。
- debug: msg={{instance.image_id}}

这里只有一个值,所以不需要使用 with_itemswith_items是循环语句。

谢谢Ben。(对于格式问题我很抱歉。)这将返回: 任务:[debug var=instance.image_id] ******************************************* 好的:[54.198.217.217] => { "instance.image_id": "{{ instance.image_id }}" }或:任务:[debug msg={{instance.image_id}}] *************************************** 致命错误:[54.166.30.127] => 一个或多个未定义的变量:'dict object'没有属性'image_id'致命错误:所有主机已经失败--中止 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接