step5: flatten the neutron service configurations

This change combines the previous puppet and docker files into a single
file that performs the docker service installation and configuration
for the neutron-sriov-agent, neutron-plugin-nsx, and neutron-sfc-api
services.

Change-Id: I3403575928df245798468b2d17f4a620bbf209e5
Related-Blueprint: services-yaml-flattening
This commit is contained in:
Dan Prince 2019-02-28 10:24:51 -05:00
parent f101bbe8cf
commit 7d957ff262
17 changed files with 121 additions and 291 deletions

View File

@ -1,9 +1,14 @@
heat_template_version: rocky
description: >
OpenStack Neutron NSX
OpenStack containerized Neutron NSX Plugin configured with Puppet
parameters:
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
ServiceData:
default: {}
description: Dictionary packing service data
@ -14,8 +19,10 @@ parameters:
via parameter_defaults in the resource registry. This
mapping overrides those in ServiceNetMapDefaults.
type: json
DockerNeutronConfigImage:
description: The container image to use for the neutron config_volume
type: string
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
@ -25,11 +32,10 @@ parameters:
default: {}
description: Parameters specific to the role
type: json
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
NeutronPluginNsxPuppetTags:
default: 'neutron_plugin_nsx'
description: Puppet resource tag names that are used to generate config files with puppet
type: string
DefaultOverlayTz:
description: Name or UUID of the default NSX overlay transport zone.
type: string
@ -76,7 +82,7 @@ parameters:
outputs:
role_data:
description: Role data for the Neutron NSX plugin
description: Role data for the Neutron NSX Plugin role.
value:
service_name: neutron_plugin_nsx
config_settings:
@ -91,6 +97,15 @@ outputs:
neutron::plugins::nsx::dhcp_profile: {get_param: DhcpProfile}
neutron::plugins::nsx::dhcp_relay_service: {get_param: DhcpRelayService}
neutron::plugins::nsx::metadata_proxy: {get_param: MetadataProxy}
step_config: |
include tripleo::profile::base::neutron::plugins::nsx
service_config_settings: {}
metadata_settings: {}
# BEGIN DOCKER SETTINGS
puppet_config:
config_volume: 'neutron'
puppet_tags: {get_param: NeutronPluginNsxPuppetTags}
step_config:
get_attr: |
include tripleo::profile::base::neutron::plugins::nsx
config_image: {get_param: DockerNeutronConfigImage}
kolla_config: {}
docker_config: {}

View File

@ -30,6 +30,9 @@ parameters:
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
DockerNeutronConfigImage:
description: The container image to use for the neutron config_volume
type: string
NeutronSfcDriver:
default: 'dummy'
description: Default driver for Service Function Chaining
@ -47,5 +50,12 @@ outputs:
config_settings:
neutron::services::sfc::sfc_driver: {get_param: NeutronSfcDriver}
neutron::services::sfc::fc_driver: {get_param: NeutronFcDriver}
step_config: |
include ::tripleo::profile::base::neutron::sfc
# BEGIN DOCKER SETTING
puppet_config:
config_volume: 'neutron'
puppet_tags: neutron_sfc_service_config
step_config: |
include ::tripleo::profile::base::neutron::sfc
config_image: {get_param: DockerNeutronConfigImage}
kolla_config: {}
docker_config: {}

View File

@ -36,14 +36,77 @@ parameters:
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
NeutronPhysicalDevMappings:
description: >
List of <physical_network>:<physical device>
All physical networks listed in network_vlan_ranges
on the server should have mappings to appropriate
interfaces on each agent.
Example "tenant0:ens2f0,tenant1:ens2f1"
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronExcludeDevices:
description: >
List of <network_device>:<excluded_devices> mapping
network_device to the agent's node-specific list of virtual functions
that should not be used for virtual networking. excluded_devices is a
semicolon separated list of virtual functions to exclude from
network_device. The network_device in the mapping should appear in the
physical_device_mappings list.
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronSriovNumVFs:
description: |
Provide the list of VFs to be reserved for each SR-IOV interface.
Format ["<interface_name1>:<numvfs1>:<mode>","<interface_name2>:<numvfs2>"]
Example ["eth1:4096:switchdev","eth2:128:legacy","eth3:30"]
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronSriovAgentExtensions:
default: ""
description: >
Comma-separated list of extensions enabled for the Neutron SR-IOV agents.
type: comma_delimited_list
tags:
- role_specific
RpcPort:
default: 5672
description: The network port for messaging backend
type: number
resources:
# Merging role-specific parameters (RoleParameters) with the default parameters.
# RoleParameters will have the precedence over the default parameters.
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- neutron::agents::ml2::sriov::physical_device_mappings: NeutronPhysicalDevMappings
neutron::agents::ml2::sriov::exclude_devices: NeutronExcludeDevices
tripleo::host::sriov::number_of_vfs: NeutronSriovNumVFs
neutron::agents::ml2::sriov::extensions: NeutronSriovAgentExtensions
- values: {get_param: [RoleParameters]}
- values:
NeutronPhysicalDevMappings: {get_param: NeutronPhysicalDevMappings}
NeutronExcludeDevices: {get_param: NeutronExcludeDevices}
NeutronSriovNumVFs: {get_param: NeutronSriovNumVFs}
NeutronSriovAgentExtensions: {get_param: NeutronSriovAgentExtensions}
ContainersCommon:
type: ./containers-common.yaml
NeutronSriovAgentBase:
type: ../../puppet/services/neutron-sriov-agent.yaml
NeutronBase:
type: ../../puppet/services/neutron-base.yaml
properties:
EndpointMap: {get_param: EndpointMap}
ServiceData: {get_param: ServiceData}
@ -61,16 +124,17 @@ outputs:
role_data:
description: Role data for Neutron sriov service
value:
service_name: {get_attr: [NeutronSriovAgentBase, role_data, service_name]}
service_name: neutron_sriov_agent
config_settings:
map_merge:
- get_attr: [NeutronSriovAgentBase, role_data, config_settings]
- get_attr: [NeutronBase, role_data, config_settings]
- get_attr: [RoleParametersValue, value]
- get_attr: [NeutronLogging, config_settings]
puppet_config:
config_volume: neutron
puppet_tags: neutron_config,neutron_agent_sriov_numvfs,neutron_sriov_agent_config
step_config:
get_attr: [NeutronSriovAgentBase, role_data, step_config]
step_config: |
include ::tripleo::profile::base::neutron::sriov
config_image: {get_param: DockerNeutronConfigImage}
kolla_config:
/var/lib/kolla/config_files/neutron_sriov_agent.json:
@ -105,7 +169,7 @@ outputs:
- yaql:
expression: str($.data.port)
data:
port: {get_attr: [NeutronSriovAgentBase, role_data, config_settings, 'neutron::rabbit_port']}
port: {get_param: RpcPort}
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
@ -127,7 +191,7 @@ outputs:
persistent: yes
state: yes
metadata_settings:
get_attr: [NeutronSriovAgentBase, role_data, metadata_settings]
get_attr: [NeutronBase, role_data, metadata_settings]
upgrade_tasks: []
post_upgrade_tasks:
- when: step|int == 1

View File

@ -1,71 +0,0 @@
heat_template_version: rocky
description: >
OpenStack containerized Neutron NSX Plugin configured with Puppet
parameters:
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
ServiceData:
default: {}
description: Dictionary packing service data
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
DockerNeutronConfigImage:
description: The container image to use for the neutron config_volume
type: string
DefaultPasswords:
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
NeutronPluginNsxPuppetTags:
default: 'neutron_plugin_nsx'
description: Puppet resource tag names that are used to generate config files with puppet
type: string
resources:
NeutronBase:
type: ../../puppet/services/neutron-plugin-nsx.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 Neutron NSX Plugin role.
value:
service_name: {get_attr: [NeutronBase, role_data, service_name]}
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
service_config_settings: {get_attr: [NeutronBase, role_data, service_config_settings]}
metadata_settings:
get_attr: [NeutronBase, role_data, metadata_settings]
# BEGIN DOCKER SETTINGS
puppet_config:
config_volume: 'neutron'
puppet_tags: {get_param: NeutronPluginNsxPuppetTags}
step_config:
get_attr: [NeutronBase, role_data, step_config]
config_image: {get_param: DockerNeutronConfigImage}
kolla_config: {}
docker_config: {}

View File

@ -1,68 +0,0 @@
heat_template_version: rocky
description: >
SFC API service configured with Puppet
parameters:
ServiceData:
default: {}
description: Dictionary packing service data
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
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
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
DockerNeutronConfigImage:
description: The container image to use for the neutron config_volume
type: string
resources:
ContainersCommon:
type: ./containers-common.yaml
NeutronSfcBase:
type: ../../puppet/services/neutron-sfc-api.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 SFC role.
value:
service_name:
get_attr: [NeutronSfcBase, role_data, service_name]
config_settings:
get_attr: [NeutronSfcBase, role_data, config_settings]
# BEGIN DOCKER SETTING
puppet_config:
config_volume: 'neutron'
puppet_tags: neutron_sfc_service_config
step_config:
get_attr: [NeutronSfcBase, role_data, step_config]
config_image: {get_param: DockerNeutronConfigImage}
kolla_config: {}
docker_config: {}

View File

@ -1,7 +1,6 @@
# A Heat environment file that can be used to deploy Neutron SFC service
resource_registry:
# FIXME(bogdando): switch it, once it is containerized
OS::TripleO::Services::NeutronSfcApi: ../puppet/services/neutron-sfc-api.yaml
OS::TripleO::Services::NeutronSfcApi: ../deployment/neutron/neutron-sfc-api-container-puppet.yaml
parameter_defaults:
NeutronServicePlugins: 'flow_classifier,sfc'

View File

@ -4,7 +4,7 @@
# *************************************************************************************
## A Heat environment that can be used to deploy SR-IOV
resource_registry:
OS::TripleO::Services::NeutronSriovAgent: ../docker/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
OS::TripleO::Services::NeutronSriovHostConfig: ../puppet/services/neutron-sriov-host-config.yaml
parameter_defaults:

View File

@ -1,5 +1,5 @@
resource_registry:
OS::TripleO::Services::NeutronCorePluginNSX: /usr/share/openstack-tripleo-heat-templates/docker/services/neutron-plugin-nsx.yaml
OS::TripleO::Services::NeutronCorePluginNSX: ../deployment/neutron/neutron-plugin-nsx-container-puppet.yaml
parameter_defaults:
# Default overlay tz uuid

View File

@ -3,7 +3,7 @@
resource_registry:
OS::TripleO::Services::ComputeNeutronCorePlugin: ../../puppet/services/neutron-plugin-ml2.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../puppet/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
parameter_defaults:
NeutronMechanismDrivers: ['sriovnicswitch','opendaylight_v2']

View File

@ -1,6 +1,6 @@
# A Heat environment that can be used to enable SR-IOV support in neutron.
resource_registry:
OS::TripleO::Services::NeutronSriovAgent: ../../puppet/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
OS::TripleO::Services::NeutronSriovHostConfig: ../../puppet/services/neutron-sriov-host-config.yaml
parameter_defaults:

View File

@ -3,7 +3,7 @@
resource_registry:
OS::TripleO::Services::ComputeNeutronCorePlugin: ../../docker/services/neutron-plugin-ml2.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../docker/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
OS::TripleO::Services::NeutronSriovHostConfig: ../../puppet/services/neutron-sriov-host-config.yaml
parameter_defaults:

View File

@ -7,7 +7,7 @@
# file - neutron-ovn-ha.yaml/neutron-ovn-dvr(-ha).yaml is included.
resource_registry:
OS::TripleO::Services::NeutronSriovAgent: ../../docker/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
OS::TripleO::Services::NeutronSriovHostConfig: ../../puppet/services/neutron-sriov-host-config.yaml
OS::TripleO::Services::NeutronDhcpAgent: ../../deployment/neutron/neutron-dhcp-container-puppet.yaml

View File

@ -1,6 +1,6 @@
# A Heat environment file that can be used to deploy Neutron SFC service with OpenDaylight
resource_registry:
OS::TripleO::Services::NeutronSfcApi: ../../docker/services/neutron-sfc-api.yaml
OS::TripleO::Services::NeutronSfcApi: ../../deployment/neutron/neutron-sfc-api-container-puppet.yaml
parameter_defaults:
NeutronServicePlugins: 'odl-router_v2,trunk,flow_classifier,sfc'

View File

@ -1,6 +1,6 @@
# A Heat environment file that can be used to deploy Neutron SFC service
resource_registry:
OS::TripleO::Services::NeutronSfcApi: ../../docker/services/neutron-sfc-api.yaml
OS::TripleO::Services::NeutronSfcApi: ../../deployment/neutron/neutron-sfc-api-container-puppet.yaml
parameter_defaults:
NeutronSfcDriver: 'ovn'

View File

@ -1,6 +1,6 @@
# A Heat environment that can be used to enable SR-IOV support in neutron.
resource_registry:
OS::TripleO::Services::NeutronSriovAgent: ../../docker/services/neutron-sriov-agent.yaml
OS::TripleO::Services::NeutronSriovAgent: ../../deployment/neutron/neutron-sriov-agent-container-puppet.yaml
OS::TripleO::Services::NeutronSriovHostConfig: ../../puppet/services/neutron-sriov-host-config.yaml
parameter_defaults:

View File

@ -157,7 +157,7 @@ resource_registry:
OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
OS::TripleO::Services::NeutronCorePluginML2Nuage: puppet/services/neutron-plugin-ml2-nuage.yaml
OS::TripleO::Services::NeutronCorePluginNSX: puppet/services/neutron-plugin-nsx.yaml
OS::TripleO::Services::NeutronCorePluginNSX: deployment/neutron/neutron-plugin-nsx-container-puppet.yaml
OS::TripleO::Services::OVNDBs: docker/services/pacemaker/ovn-dbs.yaml
OS::TripleO::Services::OVNController: docker/services/ovn-controller.yaml

View File

@ -1,119 +0,0 @@
heat_template_version: rocky
description: >
OpenStack Neutron SR-IOV nic agent configured with Puppet
parameters:
ServiceData:
default: {}
description: Dictionary packing service data
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
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
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
NeutronPhysicalDevMappings:
description: >
List of <physical_network>:<physical device>
All physical networks listed in network_vlan_ranges
on the server should have mappings to appropriate
interfaces on each agent.
Example "tenant0:ens2f0,tenant1:ens2f1"
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronExcludeDevices:
description: >
List of <network_device>:<excluded_devices> mapping
network_device to the agent's node-specific list of virtual functions
that should not be used for virtual networking. excluded_devices is a
semicolon separated list of virtual functions to exclude from
network_device. The network_device in the mapping should appear in the
physical_device_mappings list.
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronSriovNumVFs:
description: |
Provide the list of VFs to be reserved for each SR-IOV interface.
Format ["<interface_name1>:<numvfs1>:<mode>","<interface_name2>:<numvfs2>"]
Example ["eth1:4096:switchdev","eth2:128:legacy","eth3:30"]
type: comma_delimited_list
default: ""
tags:
- role_specific
NeutronSriovAgentExtensions:
default: ""
description: >
Comma-separated list of extensions enabled for the Neutron SR-IOV agents.
type: comma_delimited_list
tags:
- role_specific
resources:
NeutronBase:
type: ./neutron-base.yaml
properties:
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
DefaultPasswords: {get_param: DefaultPasswords}
EndpointMap: {get_param: EndpointMap}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
# Merging role-specific parameters (RoleParameters) with the default parameters.
# RoleParameters will have the precedence over the default parameters.
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- neutron::agents::ml2::sriov::physical_device_mappings: NeutronPhysicalDevMappings
neutron::agents::ml2::sriov::exclude_devices: NeutronExcludeDevices
tripleo::host::sriov::number_of_vfs: NeutronSriovNumVFs
neutron::agents::ml2::sriov::extensions: NeutronSriovAgentExtensions
- values: {get_param: [RoleParameters]}
- values:
NeutronPhysicalDevMappings: {get_param: NeutronPhysicalDevMappings}
NeutronExcludeDevices: {get_param: NeutronExcludeDevices}
NeutronSriovNumVFs: {get_param: NeutronSriovNumVFs}
NeutronSriovAgentExtensions: {get_param: NeutronSriovAgentExtensions}
outputs:
role_data:
description: Role data for the Neutron SR-IOV nic agent service.
value:
service_name: neutron_sriov_agent
config_settings:
map_merge:
- get_attr: [NeutronBase, role_data, config_settings]
- get_attr: [RoleParametersValue, value]
step_config: |
include ::tripleo::profile::base::neutron::sriov
upgrade_tasks: []
metadata_settings:
get_attr: [NeutronBase, role_data, metadata_settings]