Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Linux Bridge Plugin? #94

Open
rohagan opened this Issue · 3 comments

3 participants

@rohagan

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 rohagan changed the title from Linux Bridge? to Linux Bridge Mechanism Driver?
@rohagan rohagan changed the title from Linux Bridge Mechanism Driver? to Linux Bridge Plugin?
@cmurphy
Owner

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
@kaazoo

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 cmurphy added the enhancement label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.