Add neutron L3 agent resource

Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
Bogdan Dobrelya 2015-08-06 14:30:37 +02:00
parent 4a9fee81e8
commit fa52977697
6 changed files with 273 additions and 3 deletions

View File

@ -254,11 +254,19 @@ def setup_resources():
signals.connect(node1, neutron_agents_ovs)
# NEUTRON DHCP, L3, metadata agents
neutron_agents_dhcp = vr.create('neutron_agents_dhcp', 'resources/neutron_agents_dhcp_puppet', {
'use_namespaces': False,
})[0]
signals.connect(node1, neutron_agents_dhcp)
neutron_agents_l3 = vr.create('neutron_agents_l3', 'resources/neutron_agents_l3_puppet', {
# TODO(bogdando) these should come from the node network resource
'use_namespaces': False,
'metadata_port': 8775,
'external_network_bridge': 'br-floating',
# The ID of the external router in neutron as 'router_id' input
# The ID of the external network in neutron as 'gateway_external_network_id'
})[0]
signals.connect(node1, neutron_agents_l3)
# NEUTRON FOR COMPUTE (node2)
# Deploy chain neutron -> (plugins) -> ( agents )

View File

@ -1,12 +1,11 @@
# Neutron DHCP agent puppet resource
Setups Neutron DHCP agent.
Installs and configures the Neutron DHCP service
# Parameters
https://github.com/openstack/puppet-neutron/blob/5.1.0/manifests/agents/dhcp.pp
``package_ensure``
(optional) Ensure state for package. Defaults to 'present'.

View File

@ -0,0 +1,100 @@
# Neutron L3 agent puppet resource
Installs and configures the Neutron L3 service
TODO: create ability to have multiple L3 services
# Parameters
https://github.com/openstack/puppet-neutron/blob/5.1.0/manifests/agents/l3.pp
``package_ensure``
(optional) The state of the package
Defaults to present
``debug``
(optional) Print debug info in logs
Defaults to false
``external_network_bridge``
(optional) The name of the external bridge
Defaults to br-ex
``use_namespaces``
(optional) Enable overlapping IPs / network namespaces
Defaults to false
``interface_driver``
(optional) Driver to interface with neutron
Defaults to OVSInterfaceDriver
``router_id``
(optional) The ID of the external router in neutron
Defaults to blank
``gateway_external_network_id``
(optional) The ID of the external network in neutron
Defaults to blank
``handle_internal_only_routers``
(optional) L3 Agent will handle non-external routers
Defaults to true
``metadata_port``
(optional) The port of the metadata server
Defaults to 9697
``send_arp_for_ha``
(optional) Send this many gratuitous ARPs for HA setup. Set it below or equal to 0
to disable this feature.
Defaults to 3
``periodic_interval``
(optional) seconds between re-sync routers' data if needed
Defaults to 40
``periodic_fuzzy_delay``
(optional) seconds to start to sync routers' data after starting agent
Defaults to 5
``enable_metadata_proxy``
(optional) can be set to False if the Nova metadata server is not available
Defaults to True
``network_device_mtu``
(optional) The MTU size for the interfaces managed by the L3 agent
Defaults to undef
Should be deprecated in the next major release in favor of a global parameter
``router_delete_namespaces``
(optional) namespaces can be deleted cleanly on the host running the L3 agent
Defaults to False
``ha_enabled``
(optional) Enabled or not HA for L3 agent.
Defaults to false
``ha_vrrp_auth_type``
(optional) VRRP authentication type. Can be AH or PASS.
Defaults to "PASS"
``ha_vrrp_auth_password``
(optional) VRRP authentication password. Required if ha_enabled = true.
Defaults to undef
``ha_vrrp_advert_int``
(optional) The advertisement interval in seconds.
Defaults to '2'
``agent_mode``
(optional) The working mode for the agent.
'legacy': default behavior (without DVR)
'dvr': enable DVR for an L3 agent running on compute node (DVR in production)
'dvr_snat': enable DVR with centralized SNAT support (DVR for single-host, for testing only)
Defaults to 'legacy'
``allow_automatic_l3agent_failover``
(optional) Automatically reschedule routers from offline L3 agents to online
L3 agents.
This is another way to run virtual routers in highly available way but with slow
failover performances compared to Keepalived feature in Neutron L3 Agent.
Defaults to 'False'

View File

@ -0,0 +1,16 @@
class { 'neutron::agents::l3':
package_ensure => 'absent',
enabled => false,
}
include neutron::params
package { 'neutron':
ensure => 'absent',
name => $::neutron::params::package_name,
}
# Remove external class dependency
Service <| title == 'neutron-l3' |> {
require => undef
}

View File

@ -0,0 +1,63 @@
$resource = hiera($::resource_name)
$ip = $resource['input']['ip']['value']
$package_ensure = $resource['input']['package_ensure']['value']
$debug = $resource['input']['debug']['value']
$external_network_bridge = $resource['input']['external_network_bridge']['value']
$use_namespaces = $resource['input']['use_namespaces']['value']
$interface_driver = $resource['input']['interface_driver']['value']
$router_id = $resource['input']['router_id']['value']
$gateway_external_network_id = $resource['input']['gateway_external_network_id']['value']
$handle_internal_only_routers = $resource['input']['handle_internal_only_routers']['value']
$metadata_port = $resource['input']['metadata_port']['value']
$send_arp_for_ha = $resource['input']['send_arp_for_ha']['value']
$periodic_interval = $resource['input']['periodic_interval']['value']
$periodic_fuzzy_delay = $resource['input']['periodic_fuzzy_delay']['value']
$enable_metadata_proxy = $resource['input']['enable_metadata_proxy']['value']
$network_device_mtu = $resource['input']['network_device_mtu']['value']
$router_delete_namespaces = $resource['input']['router_delete_namespaces']['value']
$ha_enabled = $resource['input']['ha_enabled']['value']
$ha_vrrp_auth_type = $resource['input']['ha_vrrp_auth_type']['value']
$ha_vrrp_auth_password = $resource['input']['ha_vrrp_auth_password']['value']
$ha_vrrp_advert_int = $resource['input']['ha_vrrp_advert_int']['value']
$agent_mode = $resource['input']['agent_mode']['value']
$allow_automatic_l3agent_failover = $resource['input']['allow_automatic_l3agent_failover']['value']
class { 'neutron::agents::l3':
enabled => true,
manage_service => true,
package_ensure => $package_ensure,
debug => $debug,
external_network_bridge => $external_network_bridge,
use_namespaces => $use_namespaces,
interface_driver => $interface_driver,
router_id => $router_id,
gateway_external_network_id => $gateway_external_network_id,
handle_internal_only_routers => $handle_internal_only_routers,
metadata_port => $metadata_port,
send_arp_for_ha => $send_arp_for_ha,
periodic_interval => $periodic_interval,
periodic_fuzzy_delay => $periodic_fuzzy_delay,
enable_metadata_proxy => $enable_metadata_proxy,
network_device_mtu => $network_device_mtu,
router_delete_namespaces => $router_delete_namespaces,
ha_enabled => $ha_enabled,
ha_vrrp_auth_type => $ha_vrrp_auth_type,
ha_vrrp_auth_password => $ha_vrrp_auth_password,
ha_vrrp_advert_int => $ha_vrrp_advert_int,
agent_mode => $agent_mode,
allow_automatic_l3agent_failover => $allow_automatic_l3agent_failover,
}
include neutron::params
package { 'neutron':
ensure => $package_ensure,
name => $::neutron::params::package_name,
}
# Remove external class dependency
Service <| title == 'neutron-l3' |> {
require => undef
}

View File

@ -0,0 +1,84 @@
handler: puppet
id: 'neutron_agents_l3_puppet'
input:
ip:
schema: str!
value:
ssh_key:
schema: str!
value:
ssh_user:
schema: str!
value:
package_ensure:
schema: str
value: 'present'
debug:
schema: bool
value: false
external_network_bridge:
schema: str
value: 'br-ex'
use_namespaces:
schema: bool
value: true
interface_driver:
schema: str
value: 'neutron.agent.linux.interface.OVSInterfaceDriver'
router_id:
schema: str
value:
gateway_external_network_id:
schema: str
value:
handle_internal_only_routers:
schema: bool
value: true
metadata_port:
schema: int
value: 9697
send_arp_for_ha:
schema: int
value: 3
periodic_interval:
schema: int
value: 40
periodic_fuzzy_delay:
schema: int
value: 5
enable_metadata_proxy:
schema: bool
value: true
network_device_mtu:
schema: str
value:
router_delete_namespaces:
schema: bool
value: false
ha_enabled:
schema: bool
value: false
ha_vrrp_auth_type:
schema: str
value: 'PASS'
ha_vrrp_auth_password:
schema: str
value:
ha_vrrp_advert_int:
schema: int
value: 3
agent_mode:
schema: str
value: 'legacy'
allow_automatic_l3agent_failover:
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_l3]
version: 1.0.0