# # Configure the cisco neutron plugin # More info available here: # https://wiki.openstack.org/wiki/Cisco-neutron # # === Parameters # # [*database_pass*] # The password that will be used to connect to the db # # [*keystone_password*] # The password for the supplied username # # [*database_name*] # The name of the db table to use # Defaults to neutron # # [*database_user*] # The user that will be used to connect to the db # Defaults to neutron # # [*database_host*] # The address or hostname of the database # Defaults to 127.0.0.1 # # [*keystone_username*] # The admin username for the plugin to use # Defaults to neutron # # [*keystone_auth_url*] # The url against which to authenticate # Defaults to http://127.0.0.1:35357/v2.0/ # # [*keystone_tenant*] # The tenant the supplied user has admin privs in # Defaults to services # # [*vswitch_plugin*] # (optional) The openvswitch plugin to use # Defaults to ovs_neutron_plugin.OVSNeutronPluginV2 # # [*nexus_plugin*] # (optional) The nexus plugin to use # Defaults to undef. This will not set a nexus plugin to use # Can be set to neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin # # Other parameters are currently not used by the plugin and # can be left unchanged, but in grizzly the plugin will fail # to launch if they are not there. The config for Havana will # move to a single config file and this will be simplified. class neutron::plugins::cisco( $keystone_password, $database_pass, # Database connection $database_name = 'neutron', $database_user = 'neutron', $database_host = '127.0.0.1', # Keystone connection $keystone_username = 'neutron', $keystone_tenant = 'services', $keystone_auth_url = 'http://127.0.0.1:35357/v2.0/', $vswitch_plugin = 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2', $nexus_plugin = undef, # Plugin minimum configuration $vlan_start = '100', $vlan_end = '3000', $vlan_name_prefix = 'q-', $model_class = 'neutron.plugins.cisco.models.virt_phy_sw_v2.VirtualPhysicalSwitchModelV2', $max_ports = '100', $max_port_profiles = '65568', $manager_class = 'neutron.plugins.cisco.segmentation.l2network_vlan_mgr_v2.L2NetworkVLANMgr', $max_networks = '65568', $package_ensure = 'present' ) { Neutron_plugin_cisco<||> ~> Service['neutron-server'] Neutron_plugin_cisco_db_conn<||> ~> Service['neutron-server'] Neutron_plugin_cisco_l2network<||> ~> Service['neutron-server'] ensure_resource('file', '/etc/neutron/plugins', { ensure => directory, owner => 'root', group => 'neutron', mode => '0640'} ) ensure_resource('file', '/etc/neutron/plugins/cisco', { ensure => directory, owner => 'root', group => 'neutron', mode => '0640'} ) # Ensure the neutron package is installed before config is set # under both RHEL and Ubuntu if ($::neutron::params::server_package) { Package['neutron-server'] -> Neutron_plugin_cisco<||> Package['neutron-server'] -> Neutron_plugin_cisco_db_conn<||> Package['neutron-server'] -> Neutron_plugin_cisco_l2network<||> } else { Package['neutron'] -> Neutron_plugin_cisco<||> Package['neutron'] -> Neutron_plugin_cisco_db_conn<||> Package['neutron'] -> Neutron_plugin_cisco_l2network<||> } if $::operatingsystem == 'Ubuntu' { file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG': path => '/etc/default/neutron-server', match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', line => "NEUTRON_PLUGIN_CONFIG=${::neutron::params::cisco_config_file}", require => [ Package['neutron-server'], Package['neutron-plugin-cisco'] ], notify => Service['neutron-server'], } } package { 'neutron-plugin-cisco': ensure => $package_ensure, name => $::neutron::params::cisco_server_package, } if $nexus_plugin { neutron_plugin_cisco { 'PLUGINS/nexus_plugin' : value => $nexus_plugin; } } if $vswitch_plugin { neutron_plugin_cisco { 'PLUGINS/vswitch_plugin' : value => $vswitch_plugin; } } # neutron-server will crash if the inventory section is empty. # this is usually used for specifying which physical nexus # devices are to be used. neutron_plugin_cisco { 'INVENTORY/dummy' : value => 'dummy'; } neutron_plugin_cisco_db_conn { 'DATABASE/name': value => $database_name; 'DATABASE/user': value => $database_user; 'DATABASE/pass': value => $database_pass; 'DATABASE/host': value => $database_host; } neutron_plugin_cisco_l2network { 'VLANS/vlan_start': value => $vlan_start; 'VLANS/vlan_end': value => $vlan_end; 'VLANS/vlan_name_prefix': value => $vlan_name_prefix; 'MODEL/model_class': value => $model_class; 'PORTS/max_ports': value => $max_ports; 'PORTPROFILES/max_port_profiles': value => $max_port_profiles; 'NETWORKS/max_networks': value => $max_networks; 'SEGMENTATION/manager_class': value => $manager_class; } neutron_plugin_cisco_credentials { 'keystone/username': value => $keystone_username; 'keystone/password': value => $keystone_password, secret => true; 'keystone/auth_url': value => $keystone_auth_url; 'keystone/tenant' : value => $keystone_tenant; } # In RH, this link is used to start Neutron process but in Debian, it's used only # to manage database synchronization. if defined(File['/etc/neutron/plugin.ini']) { File <| path == '/etc/neutron/plugin.ini' |> { target => '/etc/neutron/plugins/cisco/cisco_plugins.ini' } } else { file {'/etc/neutron/plugin.ini': ensure => link, target => '/etc/neutron/plugins/cisco/cisco_plugins.ini', require => Package['neutron-plugin-cisco'], } } }