获取使用Ansible创建的AMI的AMI ID

时间:2014-09-11 18:51:34

标签: amazon-web-services ansible

我正在使用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 

和:

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

后者'注册'是从文档中复制的,但我显然无法获得正确的with_items。

AMI正在创建中。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:5)

调试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

给出了正确的结果。

答案 1 :(得分:2)

ec2_ami任务是正确的,但是您对debug模块的调用是错误的。试试这个:

- debug: var=instance.image_id

或者

- debug: msg={{instance.image_id}}

这里不需要with_items,因为只有一个值。 with_items是一个循环。