Add support for Fuel 9.0

Allow deployments on mitaka-9.0 release.
Most of the changes are connected to the fact that in Fuel 9.0 task base
deployment[0] is enabled by default[1]. Replace skipping task in favor
of overwriting.

New features will be introduced in future changes.

[0]
https://docs.google.com/presentation/d/1jZCFZlXHs_VhjtVYS2VuWgdxge5Q6sOMLz4bRLuw7YE
[1] https://review.openstack.org/#/c/273693/

Change-Id: I0d4ae5b5c43a902b42b9d7f85f8b48972fedcd9c
This commit is contained in:
Michal Skalski 2016-04-18 15:44:59 +02:00
parent 228f39e384
commit 1415172894
7 changed files with 150 additions and 127 deletions

View File

@ -7,7 +7,7 @@ OpenDaylight plugin
Overview
--------
This is a proof of concept of the plugin which will install OpenDaylight controller and set it as manager for OVS using ovsdb plugin.
This plugin will install OpenDaylight controller and set it as manager for OVS using ovsdb plugin.
* [OpenDaylight controller](https://wiki.opendaylight.org/view/OpenDaylight_Controller:Main) is a SDN controller.
* [OVSDB plugin](https://wiki.opendaylight.org/view/OVSDB_Integration:Main) implement the Open vSwitch Database management protocol.
@ -17,7 +17,7 @@ Requirements
| Requirement | Version/Comment |
|----------------------------------|-----------------|
| Mirantis OpenStack compatibility | 8.0 |
| Mirantis OpenStack compatibility | 9.0 |
Limitations
-----------

View File

@ -1,4 +1,4 @@
notice('MODULAR: neutron-configuration.pp')
notice('MODULAR: odl-common_config.pp')
include opendaylight
$use_neutron = hiera('use_neutron', false)
@ -25,30 +25,46 @@ if $use_neutron {
$ext_interface = $patch_jacks_names[0]
}
$openstack_network_hash = hiera_hash('openstack_network', { })
$neutron_config = hiera_hash('neutron_config')
$openstack_network_hash = hiera_hash('openstack_network', { })
$neutron_config = hiera_hash('neutron_config')
$neutron_advanced_config = hiera_hash('neutron_advanced_configuration', { })
$enable_qos = pick($neutron_advanced_config['neutron_qos'], false)
$core_plugin = 'neutron.plugins.ml2.plugin.Ml2Plugin'
$core_plugin = 'neutron.plugins.ml2.plugin.Ml2Plugin'
if $odl['enable_l3_odl'] {
$service_plugins = [
$default_service_plugins = [
'networking_odl.l3.l3_odl.OpenDaylightL3RouterPlugin',
'neutron.services.metering.metering_plugin.MeteringPlugin',
]
} else {
$service_plugins = [
$default_service_plugins = [
'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin',
'neutron.services.metering.metering_plugin.MeteringPlugin',
]
}
$rabbit_hash = hiera_hash('rabbit_hash', { })
$ceilometer_hash = hiera_hash('ceilometer', { })
$network_scheme = hiera_hash('network_scheme')
if $enable_qos {
$service_plugins = concat($default_service_plugins, ['qos'])
} else {
$service_plugins = $default_service_plugins
}
$neutron_config_l3 = pick($neutron_config['l3'], {})
$dhcp_lease_duration = pick($neutron_config_l3['dhcp_lease_duration'], '600')
$rabbit_hash = hiera_hash('rabbit', {})
$ceilometer_hash = hiera_hash('ceilometer', {})
$network_scheme = hiera_hash('network_scheme', {})
$verbose = pick($openstack_network_hash['verbose'], hiera('verbose', true))
$debug = pick($openstack_network_hash['debug'], hiera('debug', true))
$use_syslog = hiera('use_syslog', true)
# TODO(aschultz): LP#1499620 - neutron in UCA liberty fails to start with
# syslog enabled.
$use_syslog = $::os_package_type ? {
'ubuntu' => false,
default => hiera('use_syslog', true)
}
$use_stderr = hiera('use_stderr', false)
$log_facility = hiera('syslog_log_facility_neutron', 'LOG_LOCAL4')
@ -56,20 +72,18 @@ if $use_neutron {
$bind_host = get_network_role_property('neutron/api', 'ipaddr')
$base_mac = $neutron_config['L2']['base_mac']
$use_ceilometer = $ceilometer_hash['enabled']
$amqp_hosts = split(hiera('amqp_hosts', ''), ',')
$amqp_user = $rabbit_hash['user']
$amqp_password = $rabbit_hash['password']
$kombu_compression = hiera('kombu_compression', '')
$segmentation_type = try_get_value($neutron_config, 'L2/segmentation_type')
$nets = $neutron_config['predefined_networks']
if $segmentation_type == 'vlan' {
$net_role_property = 'neutron/private'
$iface = get_network_role_property($net_role_property, 'phys_dev')
$mtu_for_virt_network = pick(get_transformation_property('mtu', $iface[0]), '1500')
$overlay_net_mtu = $mtu_for_virt_network
if $ext_interface {
exec { 'ovs-set-provider-mapping':
@ -84,11 +98,9 @@ if $use_neutron {
require => Exec['ovs-set-manager'],
}
}
} else {
$net_role_property = 'neutron/mesh'
$iface = get_network_role_property($net_role_property, 'phys_dev')
$tunneling_ip = get_network_role_property($net_role_property, 'ipaddr')
$tunneling_ip = get_network_role_property($net_role_property, 'ipaddr')
# With bgpvpn feature enabled the connectivity to the outside world
# is solved in another way.
@ -121,31 +133,18 @@ if $use_neutron {
path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
}
}
$physical_net_mtu = pick(get_transformation_property('mtu', $iface[0]), '1500')
if $segmentation_type == 'gre' {
$mtu_offset = '42'
} else {
# vxlan is the default segmentation type for non-vlan cases
$mtu_offset = '50'
}
if $physical_net_mtu {
$overlay_net_mtu = $physical_net_mtu - $mtu_offset
} else {
$overlay_net_mtu = '1500' - $mtu_offset
}
}
$iface = get_network_role_property($net_role_property, 'phys_dev')
$physical_net_mtu = pick(get_transformation_property('mtu', $iface[0]), '1500')
$default_log_levels = hiera_hash('default_log_levels')
class { 'neutron' :
class { '::neutron' :
verbose => $verbose,
debug => $debug,
use_syslog => $use_syslog,
use_stderr => $use_stderr,
lock_path => '/var/lib/neutron/lock',
log_facility => $log_facility,
bind_host => $bind_host,
base_mac => $base_mac,
@ -153,17 +152,26 @@ if $use_neutron {
service_plugins => $service_plugins,
allow_overlapping_ips => true,
mac_generation_retries => '32',
dhcp_lease_duration => '600',
dhcp_lease_duration => $dhcp_lease_duration,
dhcp_agents_per_network => '2',
report_interval => '10',
report_interval => $neutron_config['neutron_report_interval'],
rabbit_user => $amqp_user,
rabbit_hosts => $amqp_hosts,
rabbit_password => $amqp_password,
kombu_reconnect_delay => '5.0',
network_device_mtu => $overlay_net_mtu,
network_device_mtu => $physical_net_mtu,
advertise_mtu => true,
}
# TODO (iberezovskiy): remove this workaround in N when neutron module
# will be switched to puppet-oslo usage for rabbit configuration
if $kombu_compression in ['gzip','bz2'] {
if !defined(Oslo::Messaging_rabbit['neutron_config']) and !defined(Neutron_config['oslo_messaging_rabbit/kombu_compression']) {
neutron_config { 'oslo_messaging_rabbit/kombu_compression': value => $kombu_compression; }
} else {
Neutron_config<| title == 'oslo_messaging_rabbit/kombu_compression' |> { value => $kombu_compression }
}
}
if $default_log_levels {
neutron_config {
'DEFAULT/default_log_levels' :
@ -177,8 +185,8 @@ if $use_neutron {
neutron_config { 'DEFAULT/use_syslog_rfc_format': value => true; }
}
if $use_ceilometer {
neutron_config { 'DEFAULT/notification_driver': value => 'messaging' }
neutron_config {
'DEFAULT/notification_driver': value => $ceilometer_hash['notification_driver'];
}
}

View File

@ -1,7 +1,6 @@
notice('MODULAR: odl-ml2.pp')
$use_neutron = hiera('use_neutron', false)
$compute = roles_include('compute')
class neutron {}
class { 'neutron' :}
@ -10,12 +9,18 @@ if $use_neutron {
include ::neutron::params
$node_name = hiera('node_name')
$primary_controller = roles_include(['primary-controller'])
$neutron_primary_controller_roles = hiera('neutron_primary_controller_roles', ['primary-controller'])
$neutron_compute_roles = hiera('neutron_compute_nodes', ['compute'])
$primary_controller = roles_include($neutron_primary_controller_roles)
$compute = roles_include($neutron_compute_roles)
$neutron_config = hiera_hash('neutron_config')
$neutron_server_enable = pick($neutron_config['neutron_server_enable'], true)
$neutron_nodes = hiera_hash('neutron_nodes')
$dpdk_config = hiera_hash('dpdk', {})
$enable_dpdk = pick($dpdk_config['enabled'], false)
$management_vip = hiera('management_vip')
$service_endpoint = hiera('service_endpoint', $management_vip)
$ssl_hash = hiera_hash('use_ssl', {})

View File

@ -1,22 +1,27 @@
notice('MODULAR: odl-netconfig.pp')
$roles = hiera('roles')
#ODL custome network schema
$network_scheme = odl_network_scheme($roles)
prepare_network_config($network_scheme)
if ( $::l23_os =~ /(?i:centos6)/ and $::kernelmajversion == '3.10' ) {
$ovs_datapath_package_name = 'kmod-openvswitch-lt'
}
class { 'l23network' :
$dpdk_options = hiera_hash('dpdk', {})
class { '::l23network' :
use_ovs => hiera('use_ovs', false),
use_ovs_dkms_datapath_module => $::l23_os ? {
/(?i:redhat7|centos7)/ => false,
default => true
},
ovs_datapath_package_name => $ovs_datapath_package_name,
use_dpdk => pick($dpdk_options['enabled'], false),
dpdk_options => $dpdk_options,
}
prepare_network_config($network_scheme)
$sdn = generate_network_config()
notify {'SDN': message => $sdn }
@ -24,10 +29,6 @@ notify {'SDN': message => $sdn }
sysctl::value { 'net.ipv4.conf.all.arp_accept': value => '1' }
sysctl::value { 'net.ipv4.conf.default.arp_accept': value => '1' }
# setting kernel reserved ports
# defaults are 49000,49001,35357,41055,41056,58882
class { 'openstack::reserved_ports': }
### TCP connections keepalives and failover related parameters ###
# configure TCP keepalive for host OS.
# Send 3 probes each 8 seconds, if the connection was idle
@ -35,7 +36,7 @@ class { 'openstack::reserved_ports': }
# during the check time frame, i.e. 30+3*8=54 seconds overall.
# (note: overall check time frame should be lower then
# nova_report_interval).
class { 'openstack::keepalive' :
class { '::openstack::keepalive' :
tcpka_time => '30',
tcpka_probes => '8',
tcpka_intvl => '3',
@ -49,7 +50,7 @@ L2_port<||> -> Sysfs_config_value<||>
L3_ifconfig<||> -> Sysfs_config_value<||>
L3_route<||> -> Sysfs_config_value<||>
class { 'sysfs' :}
class { '::sysfs' :}
if hiera('set_rps', true) {
sysfs_config_value { 'rps_cpus' :
@ -58,6 +59,11 @@ if hiera('set_rps', true) {
value => cpu_affinity_hex($::processorcount),
sysfs => '/sys/class/net/*/queues/rx-*/rps_cpus',
exclude => '/sys/class/net/lo/*',
}
} else {
sysfs_config_value { 'rps_cpus' :
ensure => 'absent',
name => '/etc/sysfs.d/rps_cpus.conf',
}
}
@ -69,6 +75,11 @@ if hiera('set_xps', true) {
sysfs => '/sys/class/net/*/queues/tx-*/xps_cpus',
exclude => '/sys/class/net/lo/*',
}
} else {
sysfs_config_value { 'xps_cpus' :
ensure => 'absent',
name => '/etc/sysfs.d/xps_cpus.conf',
}
}
if !defined(Package['irqbalance']) {
@ -108,5 +119,5 @@ if $run_ping_checker {
L3_route<||> -> Ping_host[$default_gateway]
}
Class['l23network'] ->
Class['::l23network'] ->
Exec['wait-for-interfaces']

View File

@ -3,37 +3,41 @@
role: [opendaylight]
requires: [deploy_start]
required_for: [deploy_end, primary-controller, controller]
tasks: [hiera, setup_repositories, fuel_pkgs, globals, tools, logging, odl-netconfig,
hosts, firewall, deploy_start, odl_install]
tasks: [hiera, setup_repositories, fuel_pkgs, globals, tools, logging, odl_install]
parameters:
strategy:
type: parallel
- id: odl_install
type: puppet
version: 2.0.0
groups: [opendaylight]
requires: [deploy_start]
required_for: [openstack-network-start, odl_configure, cluster-haproxy]
requires: [hosts, firewall, globals]
required_for: [openstack-network-start, odl_configure]
requires: [hosts, firewall, globals, netconfig]
parameters:
puppet_manifest: puppet/manifests/odl-install.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 720
- id: netconfig
type: skipped
- id: odl-netconfig
type: puppet
groups: [primary-controller, controller, cinder, cinder-vmware, compute, ceph-osd, primary-mongo, mongo, virt, ironic]
required_for: [firewall, hosts, connectivity_tests, openstack-network-start, generate_vms, primary-controller, controller, cinder, cinder-vmware, compute, ceph-osd, primary-mongo, mongo, virt, ironic, compute-vmware, opendaylight, deploy_end]
requires: [tools, hiera-override]
version: 2.0.0
groups: [primary-controller, controller, cinder, cinder-block-device, cinder-vmware, compute, ceph-osd, primary-mongo, mongo, virt, ironic]
required_for: [deploy_end]
requires: [tools]
reexecute_on: [deploy_changes]
parameters:
puppet_manifest: puppet/manifests/odl-netconfig.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 3600
test_pre:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/netconfig/netconfig_pre.rb
test_post:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/netconfig/netconfig_post.rb
- id: hiera-override
type: puppet
groups: ['primary-controller','controller','compute', 'opendaylight']
required_for: [odl-netconfig]
version: 2.0.0
required_for: [netconfig]
requires: [globals]
parameters:
puppet_manifest: puppet/manifests/hiera-override.pp
@ -41,46 +45,42 @@
timeout: 120
- id: odl_configure
groups: ['primary-controller', 'controller']
version: 2.0.0
requires: [deploy_start, primary-cluster-haproxy, cluster-haproxy]
required_for: [neutron-configuration, openstack-haproxy, openstack-network-end]
required_for: [openstack-network-common-config, openstack-haproxy, openstack-network-end]
type: puppet
parameters:
puppet_manifest: puppet/manifests/odl-service.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 1400
- id: openstack-network-common-config
type: skipped
- id: neutron-configuration
type: puppet
version: 2.0.0
groups: [primary-controller,controller,compute]
required_for: [openstack-network-end, openstack-network-server-config]
required_for: [openstack-network-end]
requires: [openstack-network-start]
parameters:
puppet_manifest: puppet/manifests/neutron-configuration.pp
puppet_manifest: puppet/manifests/odl-common_config.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 1800
- id: primary-openstack-network-plugins-l2
type: skipped
- id: openstack-network-plugins-l2
type: skipped
- id: odl-primary-network-plugins-l2
type: puppet
version: 2.0.0
groups: [primary-controller]
required_for: [openstack-network-end]
requires: [neutron-configuration, openstack-network-server-config]
refresh_on: [neutron_plugin_ml2, neutron_config, neutron_api_config]
requires: [openstack-network-start, openstack-network-common-config, openstack-network-server-config]
parameters:
puppet_manifest: puppet/manifests/odl-ml2-configuration.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 1800
- id: odl-network-plugins-l2
- id: openstack-network-plugins-l2
type: puppet
version: 2.0.0
groups: [controller,compute]
required_for: [openstack-network-end]
requires: [neutron-configuration, openstack-network-server-config]
refresh_on: [neutron_plugin_ml2, neutron_config, neutron_api_config]
requires: [openstack-network-start, openstack-network-common-config, openstack-network-server-config]
cross-depends:
- name: primary-openstack-network-plugins-l2
parameters:
puppet_manifest: puppet/manifests/odl-ml2-configuration.pp
puppet_modules: puppet/modules:/etc/puppet/modules
@ -92,8 +92,42 @@
# and move networks and router creation on the end.
# In other case standard path is preserved, but additional
# condition is added to tasks
- id: primary-openstack-network-agents-l3
type: puppet
version: 2.0.0
groups: [primary-controller]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-networks, openstack-network-routers, primary-openstack-network-plugins-l2, openstack-network-plugins-l2]
refresh_on: [neutron_l3_agent_config]
condition: "settings:opendaylight.enable_l3_odl == false"
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/l3.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
- id: openstack-network-agents-l3
type: puppet
version: 2.0.0
groups: [controller,compute]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-networks, openstack-network-routers, primary-openstack-network-plugins-l2, openstack-network-plugins-l2]
refresh_on: [neutron_l3_agent_config]
condition: "settings:opendaylight.enable_l3_odl == false"
cross-depends:
- name: /(primary-)?openstack-network-plugins-l2/
role: ["/(primary-)?controller/"]
- name: primary-openstack-network-agents-l3
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/l3.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
# POST DEPLOYMENT
# Additional task for routers when L3 HA is enabled
# HA routers must be created on post-deployment step when all L3 agents are available
- id: openstack-network-networks
type: skipped
groups: [primary-controller]
- id: odl-openstack-network-networks
type: puppet
version: 2.0.0
@ -106,6 +140,7 @@
timeout: 1800
- id: openstack-network-routers
type: skipped
groups: [primary-controller]
- id: odl-openstack-network-routers
type: puppet
version: 2.0.0
@ -116,74 +151,38 @@
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/openstack-network/routers.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
# Additional task for routers when L3 HA is enabled
# HA routers must be created on post-deployment step when all L3 agents are available
- id: openstack-network-routers-ha
type: skipped
- id: odl-openstack-network-routers-ha
type: puppet
version: 2.0.0
role: [primary-controller]
condition: "settings:neutron_advanced_configuration.neutron_l3_ha.value == true and settings:opendaylight.enable_l3_odl.value == false"
condition: "settings:neutron_advanced_configuration.neutron_l3_ha == true and settings:opendaylight.enable_l3_odl == false"
required_for: [post_deployment_end]
requires: [post_deployment_start]
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/openstack-network/routers.pp
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/routers.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
cwd: /
- id: primary-openstack-network-agents-l3
type: skipped
- id: odl-nol3-primary-openstack-network-agents-l3
type: puppet
version: 2.0.0
groups: [primary-controller]
condition: "settings:opendaylight.enable_l3_odl.value == false"
required_for: [openstack-network-end]
requires: [odl-network-plugins-l2]
refresh_on: [neutron_l3_agent_config]
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/openstack-network/agents/l3.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
- id: openstack-network-agents-l3
type: skipped
- id: odl-nol3-openstack-network-agents-l3
type: puppet
version: 2.0.0
groups: [controller,compute]
condition: "settings:opendaylight.enable_l3_odl.value == false"
required_for: [primary-openstack-network-agents-dhcp, openstack-network-agents-dhcp, primary-openstack-network-agents-metadata, openstack-network-agents-metadata, openstack-network-end]
requires: [odl-network-plugins-l2]
refresh_on: [neutron_l3_agent_config]
cross-depends:
- name: /(primary-)?openstack-network-plugins-l2/
- name: odl-primary-openstack-network-agents-l3
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/openstack-network/agents/l3.pp
puppet_modules: /etc/puppet/modules
timeout: 1800
- id: configure_default_route
type: skipped
- id: odl-nol3-configure_default_route
type: puppet
version: 2.0.0
role: [primary-mongo, mongo, compute, ceph-osd, cinder]
condition: "settings:opendaylight.enable_l3_odl.value == false"
version: 2.1.0
role: [primary-mongo, mongo, compute, compute-vmware, ceph-osd, cinder, cinder-vmware]
requires: [post_deployment_start]
required_for: [post_deployment_end]
condition:
yaql_exp: >
(not $.opendaylight.enable_l3_odl) and
changedAny($.network_scheme, $.network_metadata.vips.management)
parameters:
puppet_manifest: puppet/manifests/odl-nol3-configure_default_route.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 3600
# POST DEPLOYMENT
- id: odl_dashboard_registration
type: puppet
role: [primary-controller]
required_for: [post_deployment_end]
requires: [post_deployment_start]
version: 2.0.0
parameters:
puppet_manifest: puppet/manifests/odl-dashboard.pp
puppet_modules: puppet/modules:/etc/puppet/modules

View File

@ -3,11 +3,11 @@ name: opendaylight
# Human-readable name for your plugin
title: OpenDaylight plugin
# Plugin version
version: '0.8.2'
version: '0.9.0'
# Description
description: 'This plugin provides OpenDaylight as a backend for neutron.'
# Required fuel version
fuel_version: ['8.0']
fuel_version: ['9.0']
# Specify license of your plugin
licenses: ['Apache License Version 2.0']
# Specify author or company name
@ -21,7 +21,7 @@ groups: ['network']
# The plugin is compatible with releases in the list
releases:
- os: ubuntu
version: liberty-8.0
version: mitaka-9.0
mode: ['ha']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu

View File

@ -17,7 +17,7 @@ TMP_NAME="karaf-odl.tar.gz"
#Networking odl
NETWORKING_ODL_REPO=${NETWORKING_ODL_REPO:-https://github.com/openstack/networking-odl.git}
NETWORKING_ODL_BRANCH=${NETWORKING_ODL_BRANCH:-stable/liberty}
NETWORKING_ODL_BRANCH=${NETWORKING_ODL_BRANCH:-master}
#Opnfv-quagga-packaging
OPNFV_QUAGGE_PACKAGING_REPO=${OPNFV_QUAGGE_PACKAGING_REPO:-https://github.com/nikolas-hermanns/opnfv-quagga-packaging}