I'm trying to get ansible to create ec2 instances using the following
play...works great the first time but there is an issue on subsequent
runs...
When first run, the host gets created, tagged,etc as expected. But when
the playbook is run again, a new instance is spun up if the vpc_subnet_id
is not the same as the original instance (creation gets skipped as expected
if the subnet is the same). I have 3 availability zones in every vpc, and
it doesn't matter which zone the instance is created in, but I only want
one instance of "instance_profile_name" per vpc...
Is there way that I'm missing so that "exact_count" and "count_tag" will
take into account the entire vpc and not the specific subnet that is
returned during the facts gathering?
ansible 2.4.1.0
config file = ./ansible.cfg
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.14 (default, Nov 2 2017, 18:42:05) [GCC 7.2.1
20170915 (Red Hat 7.2.1-2)]
- name: Gather subnet facts
ec2_vpc_subnet_facts:
profile: "{{ aws_account_name }}"
region: "{{ region }}"
filters:
vpc-id: "{{ vpc_id }}"
"tag:Public": "True"
register: subnet_facts
- name: Create the EC2 instance
ec2:
profile: "{{ aws_account_name }}"
region: "{{ region }}"
vpc_subnet_id: "{{ (subnet_facts.subnets | random).id }}"
image: "{{ (ami_search.results | first).ami_id }}"
instance_type: "{{ instance_type }}"
key_name: "{{ keypair_name }}"
instance_profile_name: "{{ instance_profile_name }}"
volumes:
- device_name: "{{ root_device_name }}"
volume_type: gp2
volume_size: 20
delete_on_termination: yes
assign_public_ip: yes
group: "{{ security_groups }}"
instance_tags:
Name: "[ {{ vpc_name }} ] - {{ inventory_hostname.split('.') |
first }}"
hostname: "{{ inventory_hostname }}"
exact_count: 1
count_tag:
Name: "[ {{ vpc_name }} ] - {{ inventory_hostname.split('.') |
first }}"
hostname: "{{ inventory_hostname }}"
termination_protection: yes
monitoring: no
wait: yes
--
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/95a7aa81-c117-462c-afc5-8f3c9324e680%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.