Linux Bridge Plugin? #94

Open
rohagan opened this Issue Sep 10, 2014 · 5 comments

Comments

Projects
None yet
3 participants

rohagan commented Sep 10, 2014

I know the puppet openstack module utilizes OVS as it's default mechanism driver/plugin, is there a way to utilize a Linux Bridge instead of the default OVS mechanism driver/plugin with the puppet openstack module?

Thanks for any input,

rohagan changed the title from Linux Bridge? to Linux Bridge Mechanism Driver? Sep 10, 2014

rohagan changed the title from Linux Bridge Mechanism Driver? to Linux Bridge Plugin? Sep 10, 2014

Contributor

cmurphy commented Oct 13, 2014

The puppetlabs openstack module doesn't currently provide an interface to use Linux Bridge instead of OVS, but it is available in the neutron module. You could design your own profiles that use the neutron::agents::linuxbridge and neutron::plugins::linuxbridge classes.

It looks like there's a parameter in the openstack class for neutron_mechanism_drivers, but that just gets passed to openstack::common::ovs so that's not actually useful. We could try to move openstack::common::ovs to something like openstack::common::ml2 and make the driver actually configurable. I won't be able to get to that refactor any time soon, but I would be happy to look at pull requests for it.

rohagan commented Oct 14, 2014

Thank you for writing me back,

This is exactly what I kind of figured, running neuron separately to utilize the linuxbridge,

But again thank you for your response, and a look at a pull request would also be very much appreciated,

Thanks,

Ryan

Date: Mon, 13 Oct 2014 14:55:28 -0700
From: notifications@github.com
To: puppetlabs-openstack@noreply.github.com
CC: ryanohagan75@hotmail.com
Subject: Re: [puppetlabs-openstack] Linux Bridge Plugin? (#94)

The puppetlabs openstack module doesn't currently provide an interface to use Linux Bridge instead of OVS, but it is available in the neutron module. You could design your own profiles that use the neutron::agents::linuxbridge and neutron::plugins::linuxbridge classes.

It looks like there's a parameter in the openstack class for neutron_mechanism_drivers, but that just gets passed to openstack::common::ovs so that's not actually useful. We could try to move openstack::common::ovs to something like openstack::common::ml2 and make the driver actually configurable. I won't be able to get to that refactor any time soon, but I would be happy to look at pull requests for it.


Reply to this email directly or view it on GitHub. =

kaazoo commented Nov 7, 2014

I also use LinuxBridge instead of OpenvSwitch and made the following changes:

diff --git a/manifests/profile/neutron/agent.pp b/manifests/profile/neutron/agent.pp
index f05ab71..31c1c6e 100644
--- a/manifests/profile/neutron/agent.pp
+++ b/manifests/profile/neutron/agent.pp
@@ -1,5 +1,5 @@
 # The profile to set up a neutron agent
 class openstack::profile::neutron::agent {
   include ::openstack::common::neutron
-  include ::openstack::common::ovs
+#  include ::openstack::common::ovs
 }
diff --git a/manifests/profile/neutron/server.pp b/manifests/profile/neutron/server.pp
index 0f211c9..3a6f0f2 100644
--- a/manifests/profile/neutron/server.pp
+++ b/manifests/profile/neutron/server.pp
@@ -5,7 +5,7 @@ class openstack::profile::neutron::server {
   openstack::resources::firewall { 'Neutron API': port => '9696', }

   include ::openstack::common::neutron
-  include ::openstack::common::ovs
+#  include ::openstack::common::ovs

   Class['::neutron::db::mysql'] -> Exec['neutron-db-sync']
 }
diff --git a/manifests/role/allinone.pp b/manifests/role/allinone.pp
index 0c50195..bdcde3a 100644
--- a/manifests/role/allinone.pp
+++ b/manifests/role/allinone.pp
@@ -13,13 +13,13 @@ class openstack::role::allinone inherits ::openstack::role {
   class { '::openstack::profile::cinder::api': }
   class { '::openstack::profile::nova::compute': }
   class { '::openstack::profile::nova::api': }
-  class { '::openstack::profile::neutron::router': }
+#  class { '::openstack::profile::neutron::router': }
   class { '::openstack::profile::neutron::server': }
   class { '::openstack::profile::heat::api': }
   class { '::openstack::profile::horizon': }
   class { '::openstack::profile::auth_file': }
-  class { '::openstack::setup::sharednetwork': }
-  class { '::openstack::setup::cirros': }
+#  class { '::openstack::setup::sharednetwork': }
+#  class { '::openstack::setup::cirros': }

-  Class['::openstack::profile::ceilometer::api'] -> Class['::openstack::setup::cirros']
+#  Class['::openstack::profile::ceilometer::api'] -> Class['::openstack::setup::cirros']
 }

In my .pp file I added the following:

class { 'neutron::plugins::ml2':
  type_drivers          => ['flat', 'vlan'],
  tenant_network_types  => ['vlan'],
  mechanism_drivers     => ['linuxbridge'],
  flat_networks         => ['physnet1'],
  network_vlan_ranges   => ['physnet1:1000:1100'],
  enable_security_group => true,
}

file { '/etc/neutron/plugins/linuxbridge':
  ensure => directory,
  alias  => 'linuxbridge-confdir',
}

file { '/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini':
  ensure  => link,
  target  => '/etc/neutron/plugin.ini',
  require => File['linuxbridge-confdir'],
  alias   => 'linuxbridge-conffile',
}

class { 'neutron::agents::ml2::linuxbridge':
  physical_interface_mappings => ['physnet1:eth1'],
  require                     => File['linuxbridge-conffile'],
}

class { 'neutron::agents::dhcp':
  interface_driver => 'neutron.agent.linux.interface.BridgeInterfaceDriver',
}

class { 'neutron::agents::l3':
  external_network_bridge => '',
  interface_driver        => 'neutron.agent.linux.interface.BridgeInterfaceDriver',
}

class { 'neutron::agents::lbaas':
  interface_driver => 'neutron.agent.linux.interface.BridgeInterfaceDriver',
}

class { 'neutron::agents::metering':
  interface_driver => 'neutron.agent.linux.interface.BridgeInterfaceDriver',
}

class { 'neutron::agents::vpnaas':
  interface_driver => 'neutron.agent.linux.interface.BridgeInterfaceDriver',
}

cmurphy added the enhancement label Jan 19, 2015

Contributor

cmurphy commented Apr 27, 2015

This is in our backlog here but I don't think we will have the chance to work on it soon. If someone wants to take this on I think it would be reasonably simple to add this support to the module, as @kaazoo demonstrated.

kaazoo commented Oct 9, 2015

By the way, add forked this repository and added optional LinuxBridge support:
https://github.com/kaazoo/puppetlabs-openstack

Might not be fully complete, but works for me so far.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment