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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
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