Limit number of instances with specific role

Hi,

I want to install specific role on part of the hosts in a host group. Not a rolling update, but as an absolute limit of some process installation in entire host group.
So, according to that number process will be installed or removed from instance to adjust.

How can i implement this?

Regards,
Leonid

Do you need to do this randomly and then remember which ones were
randomly chosen? Or could you just, say, work with the first X in a
group? If the latter, you might be able to do something like this
(untested) to do the first 3 servers in a specific_group:

hosts: specific_group[0]:specific_group[1]:specific_group[2]
roles:
  - foo

You could also try creating a new sub-group in your inventory that is
comprised of something like the above. Again, not sure if that would
work.

A nice way to express the above might be to use group ranges:

  • hosts: specific_group[0:5]

Though often this is controlled by tags. Say, for instance, you are on EC2 and use the “ec2” module with the “exact_count” parameter to set the number of images with the “webserver” tag to 25 instances.

Then, using the ec2 dynamic inventory, talk to all machines with that tag:

  • hosts: ec2_tag_webserver
    roles:

That may provide an alternative way of dealing with things if it’s applicable.

Nice, I wasn't aware of this syntax. I've used the longer form when
doing something like setting up an elasticsearch cluster where the
first 3 nodes were set as master, non-data nodes. This is definitely
cleaner and easier to extend if I need to add more master nodes.