Puppet Class: profile::wmcs::cloud_private_subnet
- Defined in:
- modules/profile/manifests/wmcs/cloud_private_subnet.pp
Overview
SPDX-License-Identifier: Apache-2.0
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'modules/profile/manifests/wmcs/cloud_private_subnet.pp', line 2
class profile::wmcs::cloud_private_subnet (
Stdlib::Fqdn $cloud_private_host = lookup('profile::wmcs::cloud_private_subnet::host'),
String[1] $cloud_private_gw_t = lookup('profile::wmcs::cloud_private_subnet::gw_template'),
Integer[1,32] $netmask_v4 = lookup('profile::wmcs::cloud_private_subnet::netmask_v4', {'default_value' => 24}),
Integer[1,128] $netmask_v6 = lookup('profile::wmcs::cloud_private_subnet::netmask_v6', {'default_value' => 64}),
Stdlib::IP::Address::V4::Cidr $supernet_v4 = lookup('profile::wmcs::cloud_private_subnet::supernet_v4'),
Stdlib::IP::Address::V6::Cidr $supernet_v6 = lookup('profile::wmcs::cloud_private_subnet::supernet_v6'),
Array[Wmflib::IP::Address::CIDR] $public_cidrs = lookup('profile::wmcs::cloud_private_subnet::public_cidrs'),
Optional[String[1]] $base_iface = lookup('profile::wmcs::cloud_private_subnet::base_iface', {default_value => undef}),
Profile::Wmcs::Vlan_Mapping $vlan_mapping = lookup('profile::wmcs::cloud_private_subnet::vlan_mapping'),
Netbox::Device::Location $netbox_location = lookup('profile::netbox::host::location'),
) {
include network::constants
$rack = downcase($netbox_location['rack'])
$vlan_id = $vlan_mapping[$::site][$rack]
$cloud_private_address_v4 = dnsquery::a($cloud_private_host)[0]
$cloud_private_address_v6 = dnsquery::aaaa($cloud_private_host)[0]
$base_interface = $base_iface.lest || { $facts['interface_primary'] }
interface::tagged { 'cloud_private_subnet_iface':
base_interface => $base_interface,
vlan_id => $vlan_id,
method => 'manual',
up => 'ip link set $IFACE up',
down => 'ip link set $IFACE down',
}
$interface = "vlan${vlan_id}"
interface::ip { 'cloud_private_subnet_ip4':
interface => $interface,
address => $cloud_private_address_v4,
prefixlen => $netmask_v4,
}
interface::ip { 'cloud_private_subnet_ip6':
interface => $interface,
address => $cloud_private_address_v6,
prefixlen => $netmask_v6,
}
interface::mtu { [ $base_interface, $interface ]:
mtu => 9000,
}
$cloud_private_gw = inline_epp($cloud_private_gw_t, { 'rack' => $rack })
$gw_address_v4 = dnsquery::a($cloud_private_gw)[0]
$gw_address_v6 = dnsquery::aaaa($cloud_private_gw)[0]
interface::route { 'cloud_private_subnet_route_supernet4':
address => $supernet_v4,
nexthop => $gw_address_v4,
interface => $interface,
persist => true,
}
interface::route { 'cloud_private_subnet_route_supernet6':
address => $supernet_v6,
nexthop => $gw_address_v6,
interface => $interface,
persist => true,
}
$public_cidrs.each |$cidr| {
$gw = wmflib::ip_family($cidr) ? {
4 => $gw_address_v4,
6 => $gw_address_v6,
}
interface::route { "cloud_private_subnet_route_public_${cidr}":
address => $cidr,
nexthop => $gw,
interface => $interface,
persist => true,
}
}
$::network::constants::cloud_instance_networks[$netbox_location['site']].each |$cidr| {
$gw = wmflib::ip_family($cidr) ? {
4 => $gw_address_v4,
6 => $gw_address_v6,
}
interface::route { "cloud_private_subnet_route_instances_${cidr}":
address => $cidr,
nexthop => $gw,
interface => $interface,
persist => true,
}
}
}
|