Hi,
Machines that are powered off but match the tags in the EC2 module are not recognised by exact_count.
Consider:
- A script provisioning an instance with exact_count of 1 and associated tags is run.
- When run a second time, as expected the script does not provision another instance.
- However if the machine is stopped, and then the script is run again, another instance is provisioned.
The current implementation of exact_count assumes having a stopped machine should behave as if it does not exist, and will therefore provision another.
I would prefer to see machine state be considered as part of the exact_count match. Use of the state tag as part of the exact_count criteria seems to be a good option. Current Ansible does not allow this — a parameters are mutually exclusive: [‘exact_count’, ‘state’]) exception is thrown.
Is there something I am missing, or perhaps another way to ensure that the machine is not reprovisioned when stopped.
Happy to attempt to modify the module and submit a PR, but wanted your thoughts first.
Thanks so much,
Steve
i agree. this bothers me too.
I am still facing the same issue as mentioned by Steven Ringo in his original post above. The PR you mentioned below seems to solve the problem of starting or stopping instances based on tags, but not necessarily the issue originally described above.
I am using exact_count option with ec2 module to ensure I have exactly 2 instances with specific tags. However, if one of the instances is in stopped state and the playbook is run again, it creates another instances as if the stopped instance does not even exist. Does anyone know if this is the expected behavior as of today?
I can’t use the state parameter when I use exact_count parameter because it gives me the following error -
parameters are mutually exclusive: [‘exact_count’, ‘state’])
Can someone please guide me if I am looking at stale information or missing something?
Thanks,
Rohit
This is biting me too.
I’m trying to set the state: absent / present / stopped automatically but if exact_count is set I’m not able too…
It defeats the purpose of trying to act on multiple instances states.