Hosts aggregates allow you to group some hosts for different purposes. In this scenario, I wanted to dedicate some compute hosts for one of my tenant; making sure that no other tenant can provision to these hosts.
First, create a host aggregate with a few hosts:
nova aggregate-create reserved_hosts nova nova aggregate-add-host reserved_hosts host01.lab.marcoberube.com nova aggregate-add-host reserved_hosts host02.lab.marcoberube.com
Then, set a “fiter_tenant_id” metadata tag on this aggregate with the id of your tenant
nova aggregate-set-metadata reserved_hosts filter_tenant_id=630fcdd12af7447198afa7a210b5e25f
Finally, change your nova scheduler configuration in /etc/nova/nova.conf to include a new filter named “AggregateMultiTenancyIsolation”. This filter will only allow instances from your specified tenant_id to be provisioned in this aggregates. No other tenant will be allowed on these hosts.
You can find the full list of nova scheduler filters for Juno here: