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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to