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].
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%2BT08R-UGPr1SAYTMJYnebgFObQNp_WZuTNOPUUSekUq7DTAg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to