puppet-neutron/manifests/plugins/ml2/ovn.pp
Jake Yip 854ece099a ovn: Do not expect the separate plugin package
OVN is part of Neutron since Ussuri [1]. As such, there is no longer a
separate python-networking-ovn package that needs to be installed.
This change removes the logic to install the separate plugin package,
and also updates the config file path to use the file provided by
the current neutron package.

In addition, this change ensures the ovn-metadata-agent package is
installed in Ubuntu/Debian as well.

[1] https://docs.openstack.org/releasenotes/neutron/ussuri.html#relnotes-16-0-0-stable-ussuri

Closes-Bug: #1945973
Change-Id: I8e32e0ca02b841058dc71f00a72b825e6441c1d3
2021-10-05 00:26:42 +09:00

191 lines
7.4 KiB
Puppet

# This class installs and configures the OVN Neutron plugin
#
# === Parameters
#
# [*ovn_nb_connection*]
# (optional) The connection string for the OVN_Northbound OVSDB.
# Defaults to 'tcp:127.0.0.1:6641'
#
# [*ovn_sb_connection*]
# (optional) The connection string for the OVN_Southbound OVSDB
# Defaults to 'tcp:127.0.0.1:6642'
#
# [*ovn_nb_private_key*]
# (optional) The PEM file with private key for SSL connection to OVN-NB-DB
# Defaults to $::os_service_default
#
# [*ovn_nb_certificate*]
# (optional) The PEM file with certificate that certifies the private
# key specified in ovn_nb_private_key
# Defaults to $::os_service_default
#
# [*ovn_nb_ca_cert*]
# (optional) The PEM file with CA certificate that OVN should use to
# verify certificates presented to it by SSL peers
# Defaults to $::os_service_default
#
# [*ovn_sb_private_key*]
# (optional) The PEM file with private key for SSL connection to OVN-SB-DB
# Defaults to $::os_service_default
#
# [*ovn_sb_certificate*]
# (optional) The PEM file with certificate that certifies the
# private key specified in ovn_sb_private_key
# Defaults to $::os_service_default
#
# [*ovn_sb_ca_cert*]
# (optional) The PEM file with CA certificate that OVN should use to
# verify certificates presented to it by SSL peers
# Defaults to $::os_service_default
#
# [*package_ensure*]
# (optional) The intended state of the python-networking-odl
# package, i.e. any of the possible values of the 'ensure'
# property for a package resource type.
# Defaults to 'present'
#
# [*ovsdb_connection_timeout*]
# (optional) Timeout in seconds for the OVSDB connection transaction
# Defaults to $::os_service_default
#
# [*neutron_sync_mode*]
# (optional) The synchronization mode of OVN with Neutron DB.
# Valid values are - 'log', 'off', 'repair'
# off - synchronization is off
# log - during neutron-server startup check to see if OVN is in sync with
# the Neutron database. Log warnings for any inconsistencies found so
# that an admin can investigate.
# repair - during neutron-server startup, automatically create resources
# found in Neutron but not in OVN. Also remove resources from OVN
# that are no longer in Neutron.
# Defaults to $::os_service_default
#
# [*vif_type*]
# (optional) Type of VIF to be used for ports.
# Valid values are 'ovs', 'vhostuser'
# Defaults to $::os_service_default
#
# [*ovn_metadata_enabled*]
# (optional) Whether to enable metadata service in OVN.
# Type: boolean
# Defaults to $::os_service_default
#
# [*dvr_enabled*]
# (optional) Whether to enable DVR.
# Type: boolean
# Defaults to $::os_service_default
#
# [*dns_servers*]
# (optional) List of dns servers which will be as forwarders
# if a subnet's dns_nameservers is empty.
# Type: List
# Defaults to $::os_service_default
#
# [*vhostuser_socket_dir*]
# (optional) The vhost-user socket directory for OVS
# Type: String
# Defaults to $::os_service_default
#
# [*ovn_emit_need_to_frag*]
# (optional) Configure OVN to emit "need to frag" packets in case
# of MTU mismatch. Before enabling this configuration make
# sure that its supported by the host kernel (version >=
# 5.2) or by checking the output of the following command:
# ovs-appctl -t ovs-vswitchd dpif/show-dp-features br-int |
# grep "Check pkt length action".
# Type: boolean
# Defaults to $::os_service_default
#
# [*network_log_rate_limit*]
# (Optional) Maximum packets logging per second.
# Used by logging service plugin.
# Defaults to $::os_service_default.
# Minimum possible value is 100.
#
# [*network_log_burst_limit*]
# (Optional) Maximum number of packets per rate_limit.
# Used by logging service plugin.
# Defaults to $::os_service_default.
# Minimum possible value is 25.
#
# [*network_log_local_output_log_base*]
# (Optional) Output logfile path on agent side, default syslog file.
# Used by logging service plugin.
# Defaults to $::os_service_default.
#
# DEPRECATED PARAMETERS
#
# [*ovn_l3_mode*]
# (optional) Whether to use OVN native L3 support. Do not change the
# value for existing deployments that contain routers.
# Type: boolean
# Defaults to undef
#
class neutron::plugins::ml2::ovn(
$ovn_nb_connection = $::os_service_default,
$ovn_sb_connection = $::os_service_default,
$ovn_nb_private_key = $::os_service_default,
$ovn_nb_certificate = $::os_service_default,
$ovn_nb_ca_cert = $::os_service_default,
$ovn_sb_private_key = $::os_service_default,
$ovn_sb_certificate = $::os_service_default,
$ovn_sb_ca_cert = $::os_service_default,
$package_ensure = 'present',
$ovsdb_connection_timeout = $::os_service_default,
$neutron_sync_mode = $::os_service_default,
$ovn_metadata_enabled = $::os_service_default,
$dvr_enabled = $::os_service_default,
$dns_servers = $::os_service_default,
$vhostuser_socket_dir = $::os_service_default,
$ovn_emit_need_to_frag = $::os_service_default,
$network_log_rate_limit = $::os_service_default,
$network_log_burst_limit = $::os_service_default,
$network_log_local_output_log_base = $::os_service_default,
# DEPRECATED PARAMETERS
$ovn_l3_mode = undef,
$vif_type = undef,
) {
include neutron::deps
require neutron::plugins::ml2
if $ovn_l3_mode != undef {
warning('The ovn_l3_mode parameter has been deprecated and has no effect')
}
if $vif_type != undef {
warning('The vif_type parameter has been deprecated and has no effect')
}
if ! ( $neutron_sync_mode in ['off', 'log', 'repair', $::os_service_default] ) {
fail( 'Invalid value for neutron_sync_mode parameter' )
}
neutron_plugin_ml2 {
'ovn/ovn_nb_connection' : value => $ovn_nb_connection;
'ovn/ovn_sb_connection' : value => $ovn_sb_connection;
'ovn/ovn_nb_private_key' : value => $ovn_nb_private_key;
'ovn/ovn_nb_certificate' : value => $ovn_nb_certificate;
'ovn/ovn_nb_ca_cert' : value => $ovn_nb_ca_cert;
'ovn/ovn_sb_private_key' : value => $ovn_sb_private_key;
'ovn/ovn_sb_certificate' : value => $ovn_sb_certificate;
'ovn/ovn_sb_ca_cert' : value => $ovn_sb_ca_cert;
'ovn/ovsdb_connection_timeout' : value => $ovsdb_connection_timeout;
'ovn/neutron_sync_mode' : value => $neutron_sync_mode;
'ovn/ovn_metadata_enabled' : value => $ovn_metadata_enabled;
'ovn/enable_distributed_floating_ip': value => $dvr_enabled;
'ovn/dns_servers' : value => join(any2array($dns_servers), ',');
'ovn/vhost_sock_dir' : value => $vhostuser_socket_dir;
'ovn/ovn_emit_need_to_frag' : value => $ovn_emit_need_to_frag;
'network_log/rate_limit' : value => $network_log_rate_limit;
'network_log/burst_limit' : value => $network_log_burst_limit;
'network_log/local_output_log_base' : value => $network_log_local_output_log_base;
}
# TODO(tkajinam): Remove this when removing the deprecated parameters
neutron_plugin_ml2 {
'ovn/ovn_l3_mode' : ensure => absent;
'ovn/vif_type' : ensure => absent;
}
}