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.