# These initial groups are the only groups required to be modified. The # additional groups are for more control of the environment. # NOTE(yoctozepto): In CI we want to test Masakari HA but not of other services, # to conserve the resources. Hence, we set Masakari groups to use both # primary and secondary while the parent group (control) uses only primary. [control] {% if scenario == 'masakari' %} {% for host in hostvars if host in ['primary'] %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} {% else %} {% for host in hostvars %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} {% endif %} [network:children] control # NOTE(yoctozepto): Until we are able to isolate network namespaces in k-a, # we are forced to separate Pacemaker remotes from full members. # This is not as bad as it sounds, because it would be enforced in # non-containerised environments anyway. # In CI we want Pacemaker remotes to run on ternaries (to test multiple remotes). [compute] {% if scenario == 'masakari' %} {% for host in hostvars if host in ['ternary1', 'ternary2'] %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} {% else %} {% for host in hostvars %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} {% endif %} [storage] {% for host in hostvars %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} [monitoring] {% for host in hostvars %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} [deployment] {% for host in hostvars %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endfor %} {% if scenario == 'cells' %} {% for host in hostvars %} {% set cell_name = 'cell' ~ loop.index %} [{{ cell_name }}] {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} mariadb_shard_id={{ loop.index0 % 2 }} [{{ cell_name }}:vars] nova_cell_name = {{ cell_name }} nova_cell_compute_group = {{ cell_name }} nova_cell_conductor_group = {{ cell_name }} nova_cell_novncproxy_group = {{ cell_name }} nova_novncproxy_port = {{ 6080 + loop.index0 }} nova_cell_database_shard_id = {{ loop.index0 % 2 }} {% endfor %} {% endif %} [baremetal:children] control network compute storage monitoring [tls-backend:children] control # You can explicitly specify which hosts run each project by updating the # groups in the sections below. Common services are grouped together. [common:children] control network compute storage monitoring [collectd:children] compute [grafana:children] monitoring [etcd:children] control [influxdb] # NOTE(dszumski): This doesn't support clustering primary [prometheus:children] monitoring {% if is_upgrade %} [kibana:children] control {% endif %} [telegraf:children] compute control monitoring network storage # NOTE(yoctozepto): Until we are able to isolate network namespaces in k-a, # we are forced to separate Pacemaker remotes from full members. # This is not as bad as it sounds, because it would be enforced in # non-containerised environments anyway. # In CI we want Pacemaker to run on primary and secondary (to test with HA). [hacluster] {% for host in hostvars %} {% if host in ['primary', 'secondary'] %} {{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} {% endif %} {% endfor %} [hacluster-remote:children] compute [loadbalancer:children] network [mariadb:children] control [rabbitmq:children] control [keystone:children] control [glance:children] control [nova:children] control [neutron:children] network [openvswitch:children] network compute manila-share [cinder:children] control [cloudkitty:children] control [memcached:children] control [horizon:children] control [swift:children] control [barbican:children] control [heat:children] control [ironic:children] control [magnum:children] control [mistral:children] control [manila:children] control [ceilometer:children] control [aodh:children] control [cyborg:children] control compute [gnocchi:children] control [tacker:children] control [trove:children] control [watcher:children] control [octavia:children] control [designate:children] control [placement:children] control [bifrost:children] deployment [zun:children] control [redis:children] control [blazar:children] control [venus:children] monitoring [letsencrypt:children] loadbalancer [skyline:children] control # Additional control implemented here. These groups allow you to control which # services run on which hosts at a per-service level. # # Word of caution: Some services are required to run on the same host to # function appropriately. For example, neutron-metadata-agent must run on the # same host as the l3-agent and (depending on configuration) the dhcp-agent. # Common [cron:children] common [fluentd:children] common [kolla-logs:children] common [kolla-toolbox:children] common [opensearch:children] control # Opensearch Dashboards [opensearch-dashboards:children] opensearch # Glance [glance-api:children] glance # Nova [nova-api:children] nova [nova-conductor:children] nova [nova-super-conductor:children] nova [nova-novncproxy:children] nova [nova-scheduler:children] nova [nova-spicehtml5proxy:children] nova [nova-compute-ironic:children] nova [nova-serialproxy:children] nova # Neutron [neutron-server:children] control [neutron-dhcp-agent:children] neutron [neutron-l3-agent:children] neutron [neutron-metadata-agent:children] neutron [neutron-ovn-metadata-agent:children] compute network [neutron-bgp-dragent:children] neutron [neutron-infoblox-ipam-agent:children] neutron [neutron-metering-agent:children] neutron [ironic-neutron-agent:children] neutron [neutron-ovn-agent:children] compute network # Cinder [cinder-api:children] cinder [cinder-backup:children] storage [cinder-scheduler:children] cinder [cinder-volume:children] storage # Cloudkitty [cloudkitty-api:children] cloudkitty [cloudkitty-processor:children] cloudkitty # iSCSI [iscsid:children] compute storage ironic [tgtd:children] storage # Manila [manila-api:children] manila [manila-scheduler:children] manila [manila-share:children] network [manila-data:children] manila # Swift [swift-proxy-server:children] swift [swift-account-server:children] storage [swift-container-server:children] storage [swift-object-server:children] storage # Barbican [barbican-api:children] barbican [barbican-keystone-listener:children] barbican [barbican-worker:children] barbican # Heat [heat-api:children] heat [heat-api-cfn:children] heat [heat-engine:children] heat # Ironic [ironic-api:children] ironic [ironic-conductor:children] ironic [ironic-inspector:children] ironic [ironic-tftp:children] ironic [ironic-http:children] ironic # Magnum [magnum-api:children] magnum [magnum-conductor:children] magnum # Mistral [mistral-api:children] mistral [mistral-executor:children] mistral [mistral-engine:children] mistral [mistral-event-engine:children] mistral # Ceilometer [ceilometer-central:children] ceilometer [ceilometer-notification:children] ceilometer [ceilometer-compute:children] compute [ceilometer-ipmi:children] compute # Aodh [aodh-api:children] aodh [aodh-evaluator:children] aodh [aodh-listener:children] aodh [aodh-notifier:children] aodh # Cyborg [cyborg-api:children] cyborg [cyborg-agent:children] compute [cyborg-conductor:children] cyborg # Gnocchi [gnocchi-api:children] gnocchi [gnocchi-statsd:children] gnocchi [gnocchi-metricd:children] gnocchi # Trove [trove-api:children] trove [trove-conductor:children] trove [trove-taskmanager:children] trove # Multipathd [multipathd:children] compute storage # Watcher [watcher-api:children] watcher [watcher-engine:children] watcher [watcher-applier:children] watcher # Octavia [octavia-api:children] octavia [octavia-driver-agent:children] octavia [octavia-health-manager:children] octavia [octavia-housekeeping:children] octavia [octavia-worker:children] octavia # Designate [designate-api:children] designate [designate-central:children] designate [designate-producer:children] designate [designate-mdns:children] network [designate-worker:children] designate [designate-sink:children] designate [designate-backend-bind9:children] designate # Placement [placement-api:children] placement # Zun [zun-api:children] zun [zun-wsproxy:children] zun [zun-compute:children] compute [zun-cni-daemon:children] compute # Tacker [tacker-server:children] tacker [tacker-conductor:children] tacker # Blazar [blazar-api:children] blazar [blazar-manager:children] blazar # Prometheus [prometheus-node-exporter:children] monitoring control compute network storage [prometheus-mysqld-exporter:children] mariadb # TODO(dougszu): Remove in D cycle {% if is_upgrade %} [prometheus-haproxy-exporter:children] loadbalancer {% endif %} [prometheus-memcached-exporter:children] memcached [prometheus-cadvisor:children] monitoring control compute network storage [prometheus-alertmanager:children] monitoring [prometheus-openstack-exporter:children] monitoring [prometheus-elasticsearch-exporter:children] opensearch [prometheus-blackbox-exporter:children] monitoring [prometheus-libvirt-exporter:children] compute [prometheus-msteams:children] prometheus-alertmanager # NOTE(yoctozepto): In CI we want to test Masakari HA but not of other services, # to conserve the resources. Hence, we set Masakari groups to use both # primary and secondary while the parent group (control) uses only primary. [masakari-api:children] hacluster [masakari-engine:children] hacluster [masakari-hostmonitor:children] hacluster [masakari-instancemonitor:children] compute [ovn-controller:children] ovn-controller-compute ovn-controller-network [ovn-controller-compute:children] compute [ovn-controller-network:children] network [ovn-database:children] control [ovn-northd:children] ovn-database [ovn-nb-db:children] ovn-database [ovn-sb-db:children] ovn-database [venus-api:children] venus [venus-manager:children] venus [letsencrypt-webserver:children] letsencrypt [letsencrypt-lego:children] letsencrypt # Skyline [skyline-apiserver:children] skyline [skyline-console:children] skyline