Using register with exact_count when launching an instance on EC2

Hi,

I’m using exact_count when creating an instance on EC2, when the instance already exists the next action fails with the following error:

fatal: [localhost] => One or more undefined variables: ‘unicode object’ has no attribute ‘public_ip’

This is the playbook:

  • name: Provision EC2 SC instances
    local_action:
    module: ec2
    region: “{{ aws_region }}”
    keypair: “{{ aws_keypair }}”
    group: ansibleDefault
    instance_type: “{{ aws_instanceType }}”
    image: “{{ aws_image }}”
    exact_count: 1
    count_tag:
    Class: “websever”
    vpc_subnet_id: “{{ vpc.subnets[0].id }}”
    assign_public_ip: True
    instance_tags: { “Class”:“webserver” }
    wait: yes
    register: ec2_info

  • name: Wait for SSH to come up
    local_action: wait_for host={{ item.public_ip }} port=22 delay=60 timeout=320 state=started
    with_items: ec2_info.instances

How can the playbook continue even if the instance exist?

Thanks,
Ofer

Try using debug on ec2_info to see what it contains. It seems that
instances is coming back with a list of strings and not a list of
objects like you thought.

For clarity, this:

  • debug: var=ec2_info

ec2_info.tagged_instances? Does that give all of the instances matching the tag, whether or not they we created in the prior step.
Test with:

  • debug: var=ec2_info

Was a solution ever found for this problem? Have the same problem where sometimes the ec2 module launches instances and sometimes it doesn’t, but I want to work with the data of the running instances regardless.