You were right - I had to change that line to:
new_ami_id: "{{ ami.image_id }}"
Thanks for the help. I've given the documentation a good read, and will
keep doing so, but these things can still be hard to figure out.
On Wednesday, 5 December 2018 11:00:17 UTC, Karl Auer wrote:
>
> Read the documentation for ec2_ami:
>
>
> https://docs.ansible.com/ansible/latest/modules/ec2_ami_module.html#return-values
>
> ... or the doco for the particular version of Ansible that you are using.
>
> The section "Return values" describes the structure inside your registered
> variable "ami".
>
> It looks to me as if to retrieve the AMI ID, you need to use "{{
> ami.image_id }}".
>
> 'dict object' has no attribute 'result' means "there is no thing called
> 'result' inside the variable you are looking at".
>
> That means you either have the wrong variable (and 'result' is to be found
> in a different variable) or you have the correct variable, but there is
> nothing called "result" inside it.
>
> Regards, K.
>
> On Wed, Dec 5, 2018 at 7:23 PM shaneoh1980 McP <[email protected]
> <javascript:>> wrote:
>
>> Ah yes, apologies for that. So I've corrected that, but getting an
>> undefined variable error.
>>
>> fatal: [server.mydomain.com]: FAILED! => {"msg": "The task includes an
>> option with an undefined variable. The error was: 'dict object' has no
>> attribute 'results'\n\nThe error appears to have been in
>> '/opt/ansible-scripts/update/create-ami.new.yml': line 14, column 7, but
>> may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe
>> offending line appears to be:\n\n\n - name: set ami id\n ^ here\n"
>> }
>>
>>
>>
>> On Tuesday, 4 December 2018 16:29:56 UTC, Karl Auer wrote:
>>>
>>> The line where you set new_ami_id, immediately below set_fact:, does
>>> not appear to be indented correctly. Indent it a few spaces and try again.
>>>
>>> Regards, K.
>>>
>>>
>>> On Wed, Dec 5, 2018 at 3:17 AM shaneoh1980 McP <[email protected]>
>>> wrote:
>>>
>>>> This is the playbook:
>>>>
>>>> - hosts: webservers
>>>> remote_user: ubuntu
>>>> tasks:
>>>> - name: create an ami
>>>> ec2_ami:
>>>> region: eu-west-2
>>>> instance_id: i-077xxxxxxxxxxx
>>>> name: "{{ inventory_hostname }}-{{
>>>> ansible_date_time.iso8601_basic_short }}"
>>>> tags:
>>>> Name: "{{ inventory_hostname }}-{{
>>>> ansible_date_time.iso8601_basic_short }}"
>>>> register: ami
>>>>
>>>>
>>>> - name: set ami id
>>>> set_fact:
>>>> new_ami_id: "{{ ami.results[0].image_id }}"
>>>>
>>>>
>>>> - pause:
>>>> seconds: 60
>>>>
>>>>
>>>> - name: copy AMI to a different region
>>>> ec2_ami_copy:
>>>> source_region: eu-west-2
>>>> source_image_id: "{{ new_ami_id }}"
>>>> name: "{{ new_ami_id }}"
>>>> region: eu-west-1
>>>>
>>>> And the full output:
>>>>
>>>> ansible-playbook 2.6.4
>>>> config file = /etc/ansible/ansible.cfg
>>>> configured module search path = [u
>>>> '/home/ubuntu/.ansible/plugins/modules', u
>>>> '/usr/share/ansible/plugins/modules']
>>>> ansible python module location = /usr/lib/python2.7/dist-packages/
>>>> ansible
>>>> executable location = /usr/bin/ansible-playbook
>>>> python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.
>>>> 0]
>>>> Using /etc/ansible/ansible.cfg as config file
>>>> [WARNING]: Ignoring invalid attribute: new_ami_id
>>>>
>>>>
>>>>
>>>>
>>>> PLAYBOOK: create-ami.new.yml
>>>> **************************************************************************************************************************************************************************************
>>>> 1 plays in create-ami.new.yml
>>>>
>>>>
>>>> PLAY [webservers]
>>>> *************************************************************************************************************************************************************************************************
>>>>
>>>>
>>>> TASK [Gathering Facts]
>>>> ********************************************************************************************************************************************************************************************
>>>> task path: /opt/ansible-scripts/update/create-ami.new.yml:2
>>>> ok: [server.mydomain.com]
>>>> META: ran handlers
>>>>
>>>>
>>>> TASK [create an ami]
>>>> **********************************************************************************************************************************************************************************************
>>>> task path: /opt/ansible-scripts/update/create-ami.new.yml:5
>>>> changed: [server.mydomain.com] => {"architecture": "x86_64",
>>>> "block_device_mapping": {}, "changed": true, "creationDate":
>>>> "2018-12-04T16:14:50.000Z", "description": "", "enhanced_networking":
>>>> true, "hypervisor": "xen", "image_id": "ami-02867e4b6aec13ee5",
>>>> "image_owner_alias": null, "image_type": "machine", "is_public": false,
>>>> "kernel_id": null, "launch_permissions": [], "location":
>>>> "541818391026/server.mydomain.com-20181204T161449", "msg": "AMI
>>>> creation operation complete.", "name":
>>>> "server.mydomain.com-20181204T161449", "ownerId": "541818391026",
>>>> "platform": null, "product_codes": [], "ramdisk_id": null,
>>>> "root_device_name": null, "root_device_type": "ebs",
>>>> "sriov_net_support": null, "state": "pending", "state_reason": null,
>>>> "tags": {"Name": "server.mydomain.com-20181204T161449"},
>>>> "virtualization_type": "hvm"}
>>>>
>>>>
>>>> TASK [set ami id]
>>>> *************************************************************************************************************************************************************************************************
>>>> task path: /opt/ansible-scripts/update/create-ami.new.yml:14
>>>> ok: [server.mydomain.com] => {"ansible_facts": {}, "changed": false}
>>>>
>>>>
>>>> TASK [pause]
>>>> ******************************************************************************************************************************************************************************************************
>>>> task path: /opt/ansible-scripts/update/create-ami.new.yml:18
>>>> Pausing for 60 seconds
>>>> (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort)
>>>> ok: [server.mydomain.com] => {"changed": false, "delta": 60, "echo":
>>>> true, "rc": 0, "start": "2018-12-04 16:14:51.149347", "stderr": "",
>>>> "stdout": "Paused for 60.0 seconds", "stop": "2018-12-04
>>>> 16:15:51.149596", "user_input": ""}
>>>>
>>>>
>>>> TASK [copy AMI to a different region]
>>>> *****************************************************************************************************************************************************************************
>>>> task path: /opt/ansible-scripts/update/create-ami.new.yml:21
>>>> fatal: [server.mydomain.com]: FAILED! => {"msg": "The task includes an
>>>> option with an undefined variable. The error was: 'new_ami_id' is
>>>> undefined\n\nThe error appears to have been in
>>>> '/opt/ansible-scripts/update/create-ami.new.yml': line 21, column 7, but
>>>> may\nbe elsewhere in the file depending on the exact syntax
>>>> problem.\n\nThe
>>>> offending line appears to be:\n\n\n - name: copy AMI to a different
>>>> region\n ^ here\n"}
>>>> to retry, use: --limit @/opt/ansible-scripts/update/create-ami.
>>>> new.retry
>>>>
>>>>
>>>> PLAY RECAP
>>>> ********************************************************************************************************************************************************************************************************
>>>> server.mydomain.com : ok=4 changed=1 unreachable=0 failed=1
>>>>
>>>>
>>>> On Tuesday, 4 December 2018 16:03:22 UTC, Karl Auer wrote:
>>>>>
>>>>> On what line was that error thrown?
>>>>>
>>>>> I think you should provide the entire playbook and the complete output.
>>>>>
>>>>> Regards, K.
>>>>>
>>>>>
>>>>> On Wed, Dec 5, 2018 at 2:37 AM shaneoh1980 McP <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> I had actually tried that already, and when I do I get this error:
>>>>>>
>>>>>> "msg": "The task includes an option with an undefined variable. The
>>>>>> error was: 'new_ami_id' is undefined\
>>>>>>
>>>>>> Which is confusing because it seems to me it clearly is being defined.
>>>>>>
>>>>>> On Tue, 4 Dec 2018 at 15:26, Karl Auer <[email protected]> wrote:
>>>>>>
>>>>>>> You need to wrap wrap the variable up in curly braces so that it is
>>>>>>> interpreted rather than taken literally.
>>>>>>>
>>>>>>> I.e., where you have:
>>>>>>> new_ami_id: ami.results[0].image_id
>>>>>>>
>>>>>>> you need:
>>>>>>> new_ami_id: "{{ ami.results[0].image_id }}"
>>>>>>>
>>>>>>> Regards, K.
>>>>>>>
>>>>>>> On Wed, Dec 5, 2018 at 2:14 AM shaneoh1980 McP <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> After more searching I also tried this:
>>>>>>>>
>>>>>>>> ---
>>>>>>>> - hosts: webservers
>>>>>>>> remote_user: ubuntu
>>>>>>>> tasks:
>>>>>>>> - name: create an ami
>>>>>>>> ec2_ami:
>>>>>>>> region: eu-west-2
>>>>>>>> instance_id: i-0771xxxxxxxxxx
>>>>>>>> name: "{{ inventory_hostname }}-{{
>>>>>>>> ansible_date_time.iso8601_basic_short }}"
>>>>>>>> tags:
>>>>>>>> Name: "{{ inventory_hostname }}-{{
>>>>>>>> ansible_date_time.iso8601_basic_short }}"
>>>>>>>> register: ami
>>>>>>>>
>>>>>>>>
>>>>>>>> - name: set ami id
>>>>>>>> set_fact:
>>>>>>>> new_ami_id: ami.results[0].image_id
>>>>>>>>
>>>>>>>>
>>>>>>>> - pause:
>>>>>>>> seconds: 60
>>>>>>>>
>>>>>>>>
>>>>>>>> - name: copy AMI to a different region
>>>>>>>> ec2_ami_copy:
>>>>>>>> source_region: eu-west-2
>>>>>>>> source_image_id: "{{ new_ami_id }}"
>>>>>>>> name: "{{ new_ami_id }}"
>>>>>>>> region: eu-west-1
>>>>>>>>
>>>>>>>> But again, Ansible seems to interpret this literally:
>>>>>>>>
>>>>>>>> ami.results[0].image_id
>>>>>>>>
>>>>>>>> Rather than finding the ID of the newly created AMI.
>>>>>>>>
>>>>>>>> On Tuesday, 4 December 2018 12:04:52 UTC, shaneoh1980 McP wrote:
>>>>>>>>>
>>>>>>>>> I am trying to create a playbook which does the following:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> - creates an image of an AWS instance
>>>>>>>>> - copies the image to a different region
>>>>>>>>> - installs updates to the instance
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I can do all of this apart from getting the AMI to copy to a
>>>>>>>>> different region. I've tried a few things but this is my current
>>>>>>>>> playbook
>>>>>>>>> (this is only for the AMI creation and copying, installing updates is
>>>>>>>>> handled separately).
>>>>>>>>>
>>>>>>>>> - hosts: webservers
>>>>>>>>> remote_user: ubuntu
>>>>>>>>> tasks:
>>>>>>>>> - name: create an ami
>>>>>>>>> ec2_ami:
>>>>>>>>> region: eu-west-2
>>>>>>>>> instance_id: i-0771a2e4289c057e9
>>>>>>>>> name: "{{ inventory_hostname }}-{{
>>>>>>>>> ansible_date_time.iso8601_basic_short }}"
>>>>>>>>> tags:
>>>>>>>>> Name: "{{ inventory_hostname }}-{{
>>>>>>>>> ansible_date_time.iso8601_basic_short }}"
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> - name: set ID name
>>>>>>>>> set_fact:
>>>>>>>>> new_ami_name: ec2_ami.image_id
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> - pause:
>>>>>>>>> seconds: 60
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> - name: copy AMI to a different region
>>>>>>>>> ec2_ami_copy:
>>>>>>>>> source_region: eu-west-2
>>>>>>>>> source_image_id: "{{ new_ami_name }}"
>>>>>>>>> name: "{{ new_ami_name }}"
>>>>>>>>> region: eu-west-1
>>>>>>>>>
>>>>>>>>> For which the creation, setting fact, and pause work, but on the
>>>>>>>>> last part I get this error output:
>>>>>>>>>
>>>>>>>>> An exception occurred during task execution. To see the full
>>>>>>>>> traceback, use -vvv. The error was: ClientError: An error
>>>>>>>>> occurred (InvalidAMIID.Malformed) when calling the CopyImage
>>>>>>>>> operation: Invalid id: "ec2_ami.image_id" (expecting "ami-...")
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I've tried a few different things I'm fairly new to Ansible, but
>>>>>>>>> basically I can't figure out how to pass the image_id of the newly
>>>>>>>>> created
>>>>>>>>> AMI to the next play so that it can use this as the basis of the
>>>>>>>>> copying.
>>>>>>>>>
>>>>>>>>> I can see clearly that it's not registering the image_id as it's
>>>>>>>>> saying it's not in the expected "ami-" format, but I'm stuck from
>>>>>>>>> there.
>>>>>>>>>
>>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Ansible Project" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/d/msgid/ansible-project/8995dac7-5f1b-470f-b1e6-11ce3b1a4074%40googlegroups.com
>>>>>>>>
>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/8995dac7-5f1b-470f-b1e6-11ce3b1a4074%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Karl Auer
>>>>>>>
>>>>>>> Email : [email protected]
>>>>>>> Website: http://2pisoftware.com
>>>>>>>
>>>>>>> GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
>>>>>>> Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to a topic in
>>>>>>> the Google Groups "Ansible Project" group.
>>>>>>> To unsubscribe from this topic, visit
>>>>>>> https://groups.google.com/d/topic/ansible-project/ouLsLPAFuec/unsubscribe
>>>>>>> .
>>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>>> [email protected].
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/ansible-project/CA%2B%2BT08SN%3DZL1hX%3DBEBCB%3DYKi40rhd6Y%2BHeCTkopjOKRFgS6zEQ%40mail.gmail.com
>>>>>>>
>>>>>>> <https://groups.google.com/d/msgid/ansible-project/CA%2B%2BT08SN%3DZL1hX%3DBEBCB%3DYKi40rhd6Y%2BHeCTkopjOKRFgS6zEQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Ansible Project" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/ansible-project/CAEu1aFzMhVJ-ZGiE0tG48vvRw42Z3tR5qFmGTKxOD33kWvygeQ%40mail.gmail.com
>>>>>>
>>>>>> <https://groups.google.com/d/msgid/ansible-project/CAEu1aFzMhVJ-ZGiE0tG48vvRw42Z3tR5qFmGTKxOD33kWvygeQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Karl Auer
>>>>>
>>>>> Email : [email protected]
>>>>> Website: http://2pisoftware.com
>>>>>
>>>>> GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
>>>>> Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA
>>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Ansible Project" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/a37cfe49-febb-4ea6-a6d9-9058e360be71%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/ansible-project/a37cfe49-febb-4ea6-a6d9-9058e360be71%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>> --
>>> Karl Auer
>>>
>>> Email : [email protected]
>>> Website: http://2pisoftware.com
>>>
>>> GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
>>> Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/1eef7d41-cd3c-47e2-b7da-905c51f1918a%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/1eef7d41-cd3c-47e2-b7da-905c51f1918a%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> Karl Auer
>
> Email : [email protected] <javascript:>
> Website: http://2pisoftware.com
>
> GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
> Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/5e8a7f58-53e8-467c-a488-c3307310e4ce%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.