Add neutron agent ovs with ml2 plugin resource

Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
Bogdan Dobrelya 2015-08-28 16:32:51 +02:00
parent 696e0445ed
commit 1d990bb341
4 changed files with 189 additions and 0 deletions

View File

@ -0,0 +1,74 @@
# Neutron OVS agent with ML2 plugin puppet resource
Setups OVS neutron agent when using ML2 plugin
# === Parameters
source https://github.com/openstack/puppet-neutron/blob/5.1.0/manifests/agents/ml2/ovs.pp
``package_ensure``
(optional) The state of the package
Defaults to 'present'
``enabled``
(required) Whether or not to enable the OVS Agent
Defaults to true
``bridge_uplinks``
(optional) List of interfaces to connect to the bridge when doing
bridge mapping.
Defaults to empty list
``bridge_mapping``
(optional) List of <physical_network>:<bridge>
Defaults to empty list
``integration_bridge``
(optional) Integration bridge in OVS
Defaults to 'br-int'
``enable_tunneling``
(optional) Enable or not tunneling
Defaults to false
``tunnel_types``
(optional) List of types of tunnels to use when utilizing tunnels,
either 'gre' or 'vxlan'.
Defaults to false
``local_ip``
(optional) Local IP address of GRE tunnel endpoints.
Required when enabling tunneling
Defaults to false
``tunnel_bridge``
(optional) Bridge used to transport tunnels
Defaults to 'br-tun'
``vxlan_udp_port``
(optional) The UDP port to use for VXLAN tunnels.
Defaults to '4789'
``polling_interval``
(optional) The number of seconds the agent will wait between
polling for local device changes.
Defaults to '2"
``l2_population``
(optional) Extension to use alongside ml2 plugin's l2population
mechanism driver.
Defaults to false
``arp_responder``
(optional) Enable or not the ARP responder.
Recommanded when using l2 population mechanism driver.
Defaults to false
``firewall_driver``
(optional) Firewall driver for realizing neutron security group function.
Defaults to 'neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'.
``enable_distributed_routing``
(optional) Set to True on L2 agents to enable support
for distributed virtual routing.
Defaults to false

View File

@ -0,0 +1,4 @@
class { 'neutron::agents::ml2::ovs':
package_ensure => 'absent',
enabled => false,
}

View File

@ -0,0 +1,45 @@
$resource = hiera($::resource_name)
$ip = $resource['input']['ip']['value']
$package_ensure = $resource['input']['package_ensure']['value']
$enabled = $resource['input']['enabled']['value']
$bridge_uplinks = $resource['input']['bridge_uplinks']['value']
$bridge_mappings = $resource['input']['bridge_mappings']['value']
$integration_bridge = $resource['input']['integration_bridge']['value']
$enable_tunneling = $resource['input']['enable_tunneling']['value']
$tunnel_types = $resource['input']['tunnel_types']['value']
$local_ip = $resource['input']['local_ip']['value']
$tunnel_bridge = $resource['input']['tunnel_bridge']['value']
$vxlan_udp_port = $resource['input']['vxlan_udp_port']['value']
$polling_interval = $resource['input']['polling_interval']['value']
$l2_population = $resource['input']['l2_population']['value']
$arp_responder = $resource['input']['arp_responder']['value']
$firewall_driver = $resource['input']['firewall_driver']['value']
$enable_distributed_routing = $resource['input']['enable_distributed_routing']['value']
class { 'neutron::agents::ml2::ovs':
enabled => true,
package_ensure => $package_ensure,
bridge_uplinks => $bridge_uplinks,
bridge_mappings => $bridge_mappings,
integration_bridge => $integration_bridge,
enable_tunneling => $enable_tunneling,
tunnel_types => $tunnel_types,
local_ip => $local_ip,
tunnel_bridge => $tunnel_bridge,
vxlan_udp_port => $vxlan_udp_port,
polling_interval => $polling_interval,
l2_population => $l2_population,
arp_responder => $arp_responder,
firewall_driver => $firewall_driver,
enable_distributed_routing => $enable_distributed_routing,
}
# Remove external class dependency and restore required ones
Service <| title == 'neutron-ovs-agent-service' |> {
require => undef
}
Neutron_plugin_ml2<||> ~> Service['neutron-ovs-agent-service']
File['/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini'] ~>
Service<| title == 'neutron-ovs-agent-service' |>

View File

@ -0,0 +1,66 @@
handler: puppet
id: 'neutron_agents_ml2_ovs_puppet'
input:
ip:
schema: str!
value:
ssh_key:
schema: str!
value:
ssh_user:
schema: str!
value:
package_ensure:
schema: str
value: 'present'
enabled:
schema: bool
value: true
bridge_uplinks:
schema: [str]
value: []
bridge_mappings:
schema: [str]
value: []
integration_bridge:
schema: str
value: 'br-int'
enable_tunneling:
schema: bool
value: false
tunnel_types:
schema: [str]
value: []
local_ip:
schema: bool
value: false
tunnel_bridge:
schema: str
value: 'br-tun'
vxlan_udp_port:
schema: int
value: 4789
polling_interval:
schema: int
value: 2
l2_population:
schema: bool
value: false
arp_responder:
schema: bool
value: false
firewall_driver:
schema: str
value: 'neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'
enable_distributed_routing:
schema: bool
value: false
git:
schema: {repository: str!, branch: str!}
value: {repository: 'https://github.com/openstack/puppet-neutron', branch: '5.1.0'}
puppet_module: 'neutron'
tags: [resource/neutron, resource/neutron_agents_ml2_ovs]
version: 1.0.0