Reputation: 981
I'm building an EC2 instance with Ansible, then creating an AMI from the instance. I'm sure I'm missing something here, but how do I get the DI of the newly created AMI? I've tried:
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
The latter 'register' is copied from the docs, but I'm not able to get the right with_items obviously.
The AMI is being created fine. Any suggestions would be much appreciated.
Upvotes: 3
Views: 2317
Reputation: 981
Ran debug var=instance, and got:
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"
}
]
}
}
Given that:
- debug: var=instance.results[0].image_id
gave the correct results.
Upvotes: 7
Reputation: 34416
The ec2_ami
task is correct, but your invocation of the debug
module is wrong. Try this:
- debug: var=instance.image_id
or alternatively
- debug: msg={{instance.image_id}}
You don't need with_items
here since there's only one value. with_items
is a loop.
Upvotes: 2