
This option was recently supported in ovn-controller [1]. If this value is configured
in the external_ids column of OpenvSwitch table of OVS database, ovn-controller copies
it to the chassis table, which will be read by Neutron OVN mechanism driver. OVN mech driver can
take certain decisions based on the value. One such use case is setting the value
'enable-chassis-as-gw' in this option. Only those chassis which has this option set,
will be considered as a candidate to schedule a neutron router. So, the administrator
can decide to use only controller nodes (or networker nodes) for scheduling the
router.
[1] - 4705963f2c
Change-Id: Iabe5aec30c740447b9714e1b1ace366768488bdb
Signed-off-by: Numan Siddique <nusiddiq@redhat.com>
143 lines
5.4 KiB
YAML
143 lines
5.4 KiB
YAML
heat_template_version: queens
|
|
|
|
description: >
|
|
OpenStack containerized Ovn Controller agent.
|
|
|
|
parameters:
|
|
EndpointMap:
|
|
default: {}
|
|
description: Mapping of service endpoint -> protocol. Typically set
|
|
via parameter_defaults in the resource registry.
|
|
type: json
|
|
ServiceNetMap:
|
|
default: {}
|
|
description: Mapping of service_name -> network name. Typically set
|
|
via parameter_defaults in the resource registry. This
|
|
mapping overrides those in ServiceNetMapDefaults.
|
|
type: json
|
|
ServiceData:
|
|
default: {}
|
|
description: Dictionary packing service data
|
|
type: json
|
|
DockerOvnControllerImage:
|
|
description: image
|
|
type: string
|
|
DockerOvnControllerConfigImage:
|
|
description: The container image to use for the ovn_controller config_volume
|
|
type: string
|
|
DefaultPasswords:
|
|
default: {}
|
|
type: json
|
|
RoleName:
|
|
default: ''
|
|
description: Role name on which the service is applied
|
|
type: string
|
|
RoleParameters:
|
|
default: {}
|
|
description: Parameters specific to the role
|
|
type: json
|
|
|
|
resources:
|
|
|
|
ContainersCommon:
|
|
type: ./containers-common.yaml
|
|
|
|
OvnControllerBase:
|
|
type: ../../puppet/services/ovn-controller.yaml
|
|
properties:
|
|
EndpointMap: {get_param: EndpointMap}
|
|
ServiceData: {get_param: ServiceData}
|
|
ServiceNetMap: {get_param: ServiceNetMap}
|
|
DefaultPasswords: {get_param: DefaultPasswords}
|
|
RoleName: {get_param: RoleName}
|
|
RoleParameters: {get_param: RoleParameters}
|
|
|
|
outputs:
|
|
role_data:
|
|
description: Role data for the Ovn Controller agent.
|
|
value:
|
|
service_name: {get_attr: [OvnControllerBase, role_data, service_name]}
|
|
config_settings:
|
|
map_merge:
|
|
- get_attr: [OvnControllerBase, role_data, config_settings]
|
|
logging_source: {get_attr: [OvnControllerBase, role_data, logging_source]}
|
|
logging_groups: {get_attr: [OvnControllerBase, role_data, logging_groups]}
|
|
service_config_settings: {get_attr: [OvnControllerBase, role_data, service_config_settings]}
|
|
# BEGIN DOCKER SETTINGS
|
|
puppet_config:
|
|
puppet_tags: vs_config
|
|
config_volume: ovn_controller
|
|
step_config:
|
|
get_attr: [OvnControllerBase, role_data, step_config]
|
|
config_image: {get_param: DockerOvnControllerConfigImage}
|
|
# We need to mount /run for puppet_config step. This is because
|
|
# puppet-vswitch runs the commands "ovs-vsctl set open_vswitch . external_ids:..."
|
|
# to configure the required parameters in ovs db which will be read
|
|
# by ovn-controller. And ovs-vsctl talks to the ovsdb-server (hosting conf.db)
|
|
# on the unix domain socket - /run/openvswitch/db.sock
|
|
volumes:
|
|
- /lib/modules:/lib/modules:ro
|
|
- /run/openvswitch:/run/openvswitch
|
|
kolla_config:
|
|
/var/lib/kolla/config_files/ovn_controller.json:
|
|
command: /usr/bin/ovn-controller --pidfile --log-file unix:/run/openvswitch/db.sock
|
|
permissions:
|
|
- path: /var/log/openvswitch
|
|
owner: root:root
|
|
recurse: true
|
|
docker_config:
|
|
step_4:
|
|
configure_cms_options:
|
|
start_order: 0
|
|
detach: false
|
|
net: host
|
|
privileged: true
|
|
user: root
|
|
command: ['/bin/bash', '-c', 'CMS_OPTS=$(hiera ovn::controller::ovn_cms_options -c /etc/puppet/hiera.yaml); if [ X"$CMS_OPTS" != X ]; then ovs-vsctl set open . external_ids:ovn-cms-opts=$CMS_OPTS; fi']
|
|
image: &ovn_controller_image {get_param: DockerOvnControllerImage}
|
|
volumes:
|
|
list_concat:
|
|
- {get_attr: [ContainersCommon, volumes]}
|
|
-
|
|
- /lib/modules:/lib/modules:ro
|
|
- /run/openvswitch:/run/openvswitch
|
|
ovn_controller:
|
|
start_order: 1
|
|
image: *ovn_controller_image
|
|
net: host
|
|
privileged: true
|
|
user: root
|
|
restart: always
|
|
volumes:
|
|
- /var/lib/kolla/config_files/ovn_controller.json:/var/lib/kolla/config_files/config.json:ro
|
|
- /lib/modules:/lib/modules:ro
|
|
- /run/openvswitch:/run/openvswitch
|
|
- /var/log/containers/openvswitch:/var/log/openvswitch
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
|
|
host_prep_tasks:
|
|
- name: create persistent logs directory
|
|
file:
|
|
path: /var/log/containers/openvswitch
|
|
state: directory
|
|
- name: openvswitch logs readme
|
|
copy:
|
|
dest: /var/log/openvswitch/readme.txt
|
|
content: |
|
|
Log files from openvswitch containers can be found under
|
|
/var/log/containers/openvswitch.
|
|
ignore_errors: true
|
|
upgrade_tasks:
|
|
- name: Check if ovn_controller is deployed
|
|
command: systemctl is-enabled --quiet ovn-controller
|
|
tags: common
|
|
ignore_errors: True
|
|
register: ovn_controller_enabled
|
|
- name: "PreUpgrade step0,validation: Check service ovn_controller is running"
|
|
command: systemctl is-active --quiet ovn-controller
|
|
when: (ovn_controller_enabled.rc == 0) and (step|int == 0)
|
|
tags: validation
|
|
- name: Stop and disable ovn-controller service
|
|
when: (ovn_controller_enabled.rc == 0) and (step|int == 2)
|
|
service: name=ovn-controller state=stopped enabled=no
|