
Previously Kolla Ansible hard-coded Neutron physical networks starting at physnet1 up to physnetN, matching the number of interfaces in neutron_external_interface and bridges in neutron_bridge_name. Sometimes we may want to customise the physical network names used. This may be to allow for not all hosts having access to all physical networks, or to use more descriptive names. For example, in an environment with a separate physical network for Ironic provisioning, controllers might have access to two physical networks, while compute nodes have access to one. This change adds a neutron_physical_networks variable, making it possible to customise the Neutron physical network names used for the OVS, OVN, Linux bridge and OVS DPDK plugins. The default behaviour is unchanged. Change-Id: Ib5b8ea727014964919c6b3bd2352bac4a4ac1787
92 lines
4.2 KiB
YAML
92 lines
4.2 KiB
YAML
---
|
|
####################
|
|
# Services
|
|
####################
|
|
|
|
ovsdpdk_services:
|
|
ovsdpdk-db:
|
|
container_name: "ovsdpdk_db"
|
|
image: "{{ ovsdpdk_db_image_full }}"
|
|
enabled: "{{ neutron_plugin_agent in ['openvswitch'] }}"
|
|
host_in_groups: >-
|
|
{{
|
|
inventory_hostname in groups['compute']
|
|
or (enable_manila | bool and inventory_hostname in groups['manila-share'])
|
|
or inventory_hostname in groups['neutron-dhcp-agent']
|
|
or inventory_hostname in groups['neutron-l3-agent']
|
|
or inventory_hostname in groups['neutron-metadata-agent']
|
|
}}
|
|
volumes: "{{ ovsdpdk_db_default_volumes + ovsdpdk_db_extra_volumes }}"
|
|
dimensions: "{{ ovsdpdk_db_dimensions }}"
|
|
ovsdpdk-vswitchd:
|
|
container_name: "ovsdpdk_vswitchd"
|
|
image: "{{ ovsdpdk_vswitchd_image_full }}"
|
|
enabled: "{{ neutron_plugin_agent in ['openvswitch'] }}"
|
|
privileged: True
|
|
host_in_groups: >-
|
|
{{
|
|
inventory_hostname in groups['compute']
|
|
or (enable_manila | bool and inventory_hostname in groups['manila-share'])
|
|
or inventory_hostname in groups['neutron-dhcp-agent']
|
|
or inventory_hostname in groups['neutron-l3-agent']
|
|
or inventory_hostname in groups['neutron-metadata-agent']
|
|
}}
|
|
volumes: "{{ ovsdpdk_vswitchd_default_volumes + ovsdpdk_vswitchd_extra_volumes }}"
|
|
dimensions: "{{ ovsdpdk_vswitchd_dimensions }}"
|
|
|
|
####################
|
|
# OVS
|
|
####################
|
|
# Format: physnet1:br1,physnet2:br2
|
|
ovs_bridge_mappings: "{{ neutron_physical_networks.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}"
|
|
# Format: eth1:br1,eth2:br2
|
|
ovs_port_mappings: "{{ neutron_external_interface.split(',') | zip(neutron_bridge_name.split(',')) | map('join', ':') | join(',') }}"
|
|
tunnel_interface_network: "{{ hostvars[inventory_hostname].ansible_facts[dpdk_tunnel_interface]['ipv4']['network'] }}/{{ hostvars[inventory_hostname].ansible_facts[dpdk_tunnel_interface]['ipv4']['netmask'] }}"
|
|
tunnel_interface_cidr: "{{ dpdk_tunnel_interface_address }}/{{ tunnel_interface_network | ipaddr('prefix') }}"
|
|
ovs_cidr_mappings: "{% if neutron_bridge_name.split(',') | length != 1 %} {neutron_bridge_name.split(',')[0]}:{{ tunnel_interface_cidr }} {% else %} {{ neutron_bridge_name }}:{{ tunnel_interface_cidr }} {% endif %}"
|
|
ovs_mem_channels: 4
|
|
ovs_socket_mem: 1024
|
|
ovs_hugepage_mountpoint: /dev/hugepages
|
|
|
|
# ovs <2.7 required dpdk phyical port names to be index
|
|
# in pci address order as dpdkX where X is the index
|
|
# ovs>=2.7 allows arbitrary names but the pci address
|
|
# must be set in a new dpdkdev-opt field
|
|
# valid values are indexed or named.
|
|
ovs_physical_port_policy: named
|
|
|
|
####################
|
|
# Docker
|
|
####################
|
|
ovsdpdk_tag: "{{ openstack_tag }}"
|
|
|
|
ovsdpdk_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovsdpdk-db"
|
|
ovsdpdk_db_tag: "{{ ovsdpdk_tag }}"
|
|
ovsdpdk_db_image_full: "{{ ovsdpdk_db_image }}:{{ ovsdpdk_db_tag }}"
|
|
|
|
ovsdpdk_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovsdpdk-vswitchd"
|
|
ovsdpdk_vswitchd_tag: "{{ ovsdpdk_tag }}"
|
|
ovsdpdk_vswitchd_image_full: "{{ ovsdpdk_vswitchd_image }}:{{ ovsdpdk_vswitchd_tag }}"
|
|
ovsdpdk_db_dimensions: "{{ default_container_dimensions }}"
|
|
ovsdpdk_vswitchd_dimensions: "{{ default_container_dimensions }}"
|
|
|
|
ovsdpdk_db_default_volumes:
|
|
- "{{ node_config_directory }}/ovsdpdk-db/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "/run/openvswitch:/run/openvswitch:shared"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
- "ovsdpdk_db:/var/lib/openvswitch/"
|
|
ovsdpdk_vswitchd_default_volumes:
|
|
- "{{ node_config_directory }}/ovsdpdk-vswitchd/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "/lib/modules:/lib/modules:ro"
|
|
- "/run/openvswitch:/run/openvswitch:shared"
|
|
- "/dev:/dev:shared"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
|
|
ovsdpdk_extra_volumes: "{{ default_extra_volumes }}"
|
|
ovsdpdk_db_extra_volumes: "{{ ovsdpdk_extra_volumes }}"
|
|
ovsdpdk_vswitchd_extra_volumes: "{{ ovsdpdk_extra_volumes }}"
|