From 55db07189fa845aed104e8dfd994c090f5435c40 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Tue, 22 Mar 2016 19:22:13 -0400 Subject: [PATCH] scenario003: deploy Neutron with ML2 linuxbridge Deploy Neutron ML2 LinuxBridge on scenario003 to increase testing coverage. Depends-On: I6bf7ede4fa78eefdc6594b8dd70435a11d0c3365 Change-Id: Ib41c302c8dd3e6d7388b06e455cf19e1f13a221c --- README.md | 2 +- fixtures/scenario003.pp | 4 +- manifests/neutron.pp | 93 ++++++++++++++++++++++++++++++++++------- manifests/provision.pp | 32 ++------------ 4 files changed, 87 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index f92f85e5c..81951791f 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ scenario](#All-In-One). | keystone | X | X | X | X | | glance | rbd | swift | file | file | | nova | rbd | X | X | X | -| neutron | X | X | X | X | +| neutron | ovs | ovs | linuxbridge | ovs | | cinder | rbd | iscsi | | iscsi | | ceilometer | X | | | | | aodh | X | | | | diff --git a/fixtures/scenario003.pp b/fixtures/scenario003.pp index 4d9c6a4f5..35c2aa26a 100644 --- a/fixtures/scenario003.pp +++ b/fixtures/scenario003.pp @@ -33,7 +33,9 @@ include ::openstack_integration::rabbitmq include ::openstack_integration::mysql include ::openstack_integration::keystone include ::openstack_integration::glance -include ::openstack_integration::neutron +class { '::openstack_integration::neutron': + driver => 'linuxbridge', +} include ::openstack_integration::nova include ::openstack_integration::trove include ::openstack_integration::horizon diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 1ee7f613c..42093ee00 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -1,4 +1,13 @@ -class openstack_integration::neutron { +# Configure the Neutron service +# +# [*driver*] +# (optional) Neutron Driver to test +# Can be: openvswitch or linuxbridge. +# Defaults to 'ml2_ovs'. +# +class openstack_integration::neutron ( + $driver = 'openvswitch', +) { include ::openstack_integration::config @@ -16,6 +25,61 @@ class openstack_integration::neutron { require => Class['::rabbitmq'], } + case $driver { + 'openvswitch': { + include ::vswitch::ovs + # Functional test for Open-vSwitch: + # create dummy loopback interface to exercise adding a port to a bridge + vs_bridge { 'br-ex': + ensure => present, + notify => Exec['create_loop1_port'], + } + exec { 'create_loop1_port': + path => '/usr/bin:/bin:/usr/sbin:/sbin', + provider => shell, + command => 'ip link add name loop1 type dummy && ip addr add 127.2.0.1/24 dev loop1', + refreshonly => true, + } -> + vs_port { 'loop1': + ensure => present, + bridge => 'br-ex', + notify => Exec['create_br-ex_vif'], + } + # creates br-ex virtual interface to reach floating-ip network + exec { 'create_br-ex_vif': + path => '/usr/bin:/bin:/usr/sbin:/sbin', + provider => shell, + command => 'ip addr add 172.24.5.1/24 dev br-ex && ip link set br-ex up', + refreshonly => true, + } + class { '::neutron::agents::ml2::ovs': + enable_tunneling => true, + local_ip => '127.0.0.1', + tunnel_types => ['vxlan'], + bridge_mappings => ['external:br-ex'], + manage_vswitch => false, + } + $external_network_bridge = 'br-ex' + } + 'linuxbridge': { + exec { 'create_dummy_iface': + path => '/usr/bin:/bin:/usr/sbin:/sbin', + provider => shell, + unless => 'ip l show loop0', + command => 'ip link add name loop0 type dummy && ip addr add 172.24.5.1/24 dev loop0 && ip link set loop0 up', + } + class { '::neutron::agents::ml2::linuxbridge': + local_ip => $::ipaddress, + tunnel_types => ['vxlan'], + physical_interface_mappings => ['external:loop0'], + } + $external_network_bridge = '' + } + default: { + fail("Unsupported neutron driver (${driver})") + } + } + class { '::neutron::db::mysql': password => 'neutron', } @@ -45,14 +109,9 @@ class openstack_integration::neutron { auth_url => $::openstack_integration::config::keystone_admin_uri, } class { '::neutron::plugins::ml2': - type_drivers => ['vxlan'], - tenant_network_types => ['vxlan'], - mechanism_drivers => ['openvswitch'], - } - class { '::neutron::agents::ml2::ovs': - enable_tunneling => true, - local_ip => '127.0.0.1', - tunnel_types => ['vxlan'], + type_drivers => ['vxlan', 'flat'], + tenant_network_types => ['vxlan', 'flat'], + mechanism_drivers => $driver, } class { '::neutron::agents::metadata': debug => true, @@ -60,16 +119,23 @@ class openstack_integration::neutron { metadata_workers => 2, } class { '::neutron::agents::lbaas': - debug => true, + interface_driver => $driver, + debug => true, } class { '::neutron::agents::l3': - debug => true, + interface_driver => $driver, + debug => true, + # This parameter is deprecated but we need it for linuxbridge + # It will be dropped in a future release. + external_network_bridge => $external_network_bridge, } class { '::neutron::agents::dhcp': - debug => true, + interface_driver => $driver, + debug => true, } class { '::neutron::agents::metering': - debug => true, + interface_driver => $driver, + debug => true, } class { '::neutron::server::notifications': auth_url => $::openstack_integration::config::keystone_admin_uri, @@ -79,6 +145,5 @@ class openstack_integration::neutron { enabled => true, driver => 'neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver', } - include ::vswitch::ovs } diff --git a/manifests/provision.pp b/manifests/provision.pp index a8f31017d..720d66bb1 100644 --- a/manifests/provision.pp +++ b/manifests/provision.pp @@ -23,8 +23,10 @@ class openstack_integration::provision { Keystone_user_role['admin@openstack'] -> Exec['manage_m1.micro_nova_flavor'] neutron_network { 'public': - tenant_name => 'openstack', - router_external => true, + tenant_name => 'openstack', + router_external => true, + provider_physical_network => 'external', + provider_network_type => 'flat', } Keystone_user_role['admin@openstack'] -> Neutron_network<||> @@ -38,32 +40,6 @@ class openstack_integration::provision { tenant_name => 'openstack', } - vs_bridge { 'br-ex': - ensure => present, - notify => Exec['create_loop1_port'], - } - - # create dummy loopback interface to exercise adding a port to a bridge - exec { 'create_loop1_port': - path => '/usr/bin:/bin:/usr/sbin:/sbin', - provider => shell, - command => 'ip link add name loop1 type dummy; ip addr add 127.2.0.1/24 dev loop1', - refreshonly => true, - }-> - vs_port { 'loop1': - ensure => present, - bridge => 'br-ex', - notify => Exec['create_br-ex_vif'], - } - - # creates br-ex virtual interface to reach floating-ip network - exec { 'create_br-ex_vif': - path => '/usr/bin:/bin:/usr/sbin:/sbin', - provider => shell, - command => 'ip addr add 172.24.5.1/24 dev br-ex; ip link set br-ex up', - refreshonly => true, - } - glance_image { 'cirros': ensure => present, container_format => 'bare',