# These initial groups are the only groups required to be modified. The
# additional groups are for more control of the environment.
[control]
# These hostname must be resolvable from your deployment host
control01
control02
control03
# The above can also be specified as follows:
#control[01:03] ansible_ssh_user=kolla
# The network nodes are where your l3-agent and loadbalancers will run
# This can be the same as a host in the control group
[network]
network01
[compute]
compute01
# When compute nodes and control nodes use different interfaces,
# you can specify "api_interface" and another interfaces like below:
#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em1
[storage]
storage01
[baremetal:children]
control
network
compute
storage
# You can explicitly specify which hosts run each project by updating the
# groups in the sections below. Common services are grouped together.
[kibana:children]
control
[elasticsearch:children]
control
[haproxy:children]
network
[mariadb:children]
control
[rabbitmq:children]
control
[mongodb:children]
control
[keystone:children]
control
[glance:children]
control
[nova:children]
control
[neutron:children]
network
[cinder:children]
control
[memcached:children]
control
[horizon:children]
control
[swift:children]
control
[heat:children]
control
[murano:children]
control
[ironic:children]
control
[ceph-mon:children]
control
[ceph-rgw:children]
control
[ceph-osd:children]
storage
# 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.
# Glance
[glance-api:children]
glance
[glance-registry:children]
glance
# Nova
[nova-api:children]
nova
[nova-conductor:children]
nova
[nova-consoleauth:children]
nova
[nova-novncproxy:children]
nova
[nova-scheduler:children]
nova
[nova-spicehtml5proxy:children]
nova
[nova-compute-ironic:children]
nova
# Neutron
[neutron-server:children]
control
[neutron-dhcp-agent:children]
neutron
[neutron-l3-agent:children]
neutron
[neutron-lbaas-agent:children]
neutron
[neutron-metadata-agent:children]
neutron
# kolla/ansible/roles/nova/tasks/upgrade.yml
---
# Create new set of configs on nodes
- include: config.yml
# TODO(inc0): since nova is creating new database in L->M, we need to call it.
# It should be removed later
- include: bootstrap.yml
- include: bootstrap_service.yml
- name: Checking if conductor container needs upgrading
kolla_docker:
action: "compare_image"
common_options: "{{ docker_common_options }}"
name: "nova_conductor"
image: "{{ nova_conductor_image_full }}"
when: inventory_hostname in groups['nova-conductor']
register: conductor_differs
# Short downtime here, but from user perspective his call will just timeout or execute later
- name: Stopping all nova_conductor containers
kolla_docker:
action: "stop_container"
common_options: "{{ docker_common_options }}"
name: "nova_conductor"
when:
- inventory_hostname in groups['nova-conductor']
- conductor_differs['result']
- include: start_conductors.yml
- include: start_controllers.yml
serial: "30%"
- include: start_compute.yml
serial: "10%"
- include: reload.yml
serial: "30%"