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]
> <javascript:>> 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] <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/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] <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/1eef7d41-cd3c-47e2-b7da-905c51f1918a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.