diff --git a/manifests/init.pp b/manifests/init.pp index 4f1d4e0..99b01c0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -45,7 +45,9 @@ class kickstack ( $quantum_tunnel_id_ranges = $kickstack::params::quantum_tunnel_id_ranges, $nic_management = $kickstack::params::nic_management, $nic_data = $kickstack::params::nic_data, - $nic_external = $kickstack::params::nic_external + $nic_external = $kickstack::params::nic_external, + $quantum_router_id = $kickstack::params::quantum_router_id, + $quantum_gateway_external_network_id = $kickstack::params::quantum_gateway_external_network_id ) inherits kickstack::params { include exportfact diff --git a/manifests/node/network.pp b/manifests/node/network.pp index f2106c6..c7ffb1f 100644 --- a/manifests/node/network.pp +++ b/manifests/node/network.pp @@ -1,4 +1,5 @@ class kickstack::node::network inherits kickstack { include kickstack::quantum::agent::l2 include kickstack::quantum::agent::dhcp + include kickstack::quantum::agent::l3 } diff --git a/manifests/params.pp b/manifests/params.pp index 84da2ce..240f8bf 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -127,4 +127,8 @@ class kickstack::params { # This interface would only be present on your network nodes, and possibly also # on your API nodes if you wish to expose the API services publicly. $nic_external = pick(getvar("::${variable_prefix}nic_external"),"eth2") + + $quantum_router_id = getvar("::${variable_prefix}quantum_router_id") + + $quantum_gateway_external_network_id = getvar("::${variable_prefix}gateway_external_network_id") } diff --git a/manifests/quantum/agent/l3.pp b/manifests/quantum/agent/l3.pp new file mode 100644 index 0000000..894469e --- /dev/null +++ b/manifests/quantum/agent/l3.pp @@ -0,0 +1,24 @@ +class kickstack::quantum::agent::l3 inherits kickstack { + + include kickstack::quantum::config + + class { "::quantum::agents::l3": + debug => $::kickstack::debug, + interface_driver => $::kickstack::quantum_plugin ? { + 'ovs' => 'quantum.agent.linux.interface.OVSInterfaceDriver', + 'linuxbridge' => 'quantum.agent.linux.interface.BridgeInterfaceDriver' + }, + use_namespaces => $::kickstack::quantum_network_type ? { + 'per-tenant-router' => true, + default => false + }, + router_id => $::kickstack::quantum_network_type ? { + 'provider-router' => "$::kickstack::quantum_router_id", + default => undef + }, + gateway_external_network_id => $::kickstack::quantum_network_type ? { + 'provider-router' => "$::kickstack::quantum_gateway_external_network_id", + default => undef + } + } +}