我正在使用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正在创建中。任何建议将不胜感激。
答案 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
是一个循环。