- manage rke2 repos - add rke2 module (init, params, install, config, service) - split roles::infra::k8s::node -> control/compute roles - moved common k8s config into k8s.yaml - add bootstrap_node, manage server and token fields in rke2 config - manage install of helm - manage node attributes (from puppet facts) - manage frr exclusions for service/cluster network Reviewed-on: #394
111 lines
3.2 KiB
Puppet
111 lines
3.2 KiB
Puppet
class frrouting (
|
|
Boolean $manage_package = true,
|
|
Boolean $manage_config = true,
|
|
Boolean $manage_service = true,
|
|
String $package_name = 'frr',
|
|
String $service_name = 'frr',
|
|
Hash $daemons = {},
|
|
Hash $ospfd_interfaces = {},
|
|
String $ospfd_router_id = $facts['networking']['ip'],
|
|
Array[String] $ospfd_redistribute = [],
|
|
Array[String] $ospfd_networks = [],
|
|
Boolean $ospfd_default_originate_always = false,
|
|
Boolean $mpls_te_enabled = false,
|
|
Optional[String] $mpls_ldp_router_id = undef,
|
|
Optional[String] $mpls_ldp_transport_addr = undef,
|
|
Array[String] $mpls_ldp_interfaces = [],
|
|
Boolean $ospf_preferred_source_enable = false,
|
|
Optional[Stdlib::IP::Address] $ospf_preferred_source = undef,
|
|
Boolean $ospf_exclude_k8s_enable = false,
|
|
Optional[Stdlib::IP::Address::V4::CIDR] $k8s_cluster_cidr = undef, # pod/cluster CIDR (e.g. 10.42.0.0/16)
|
|
Optional[Stdlib::IP::Address::V4::CIDR] $k8s_service_cidr = undef, # service CIDR (e.g. 10.43.0.0/16)
|
|
) {
|
|
|
|
# sanity check
|
|
if $ospf_exclude_k8s_enable and $k8s_cluster_cidr == undef and $k8s_service_cidr == undef {
|
|
warning('frrouting: ospf_exclude_k8s_enable is true but no k8s_*_cidr provided; nothing will be filtered.')
|
|
}
|
|
|
|
$daemons_defaults = {
|
|
'bgpd' => false,
|
|
'ospfd' => true,
|
|
'ospf6d' => false,
|
|
'ldpd' => false,
|
|
'ripd' => false,
|
|
'ripngd' => false,
|
|
'isisd' => false,
|
|
'pimd' => false,
|
|
'pim6d' => false,
|
|
'nhrpd' => false,
|
|
'eigrpd' => false,
|
|
'sharpd' => false,
|
|
'pbrd' => false,
|
|
'bfdd' => false,
|
|
'fabricd' => false,
|
|
'vrrpd' => false,
|
|
'pathd' => false,
|
|
'staticd' => false,
|
|
}
|
|
|
|
$daemons_merged = merge($daemons_defaults, $daemons)
|
|
|
|
if $manage_package {
|
|
package { $package_name:
|
|
ensure => installed,
|
|
}
|
|
}
|
|
|
|
if $manage_config {
|
|
file { '/etc/frr/frr.conf':
|
|
ensure => file,
|
|
content => template('frrouting/frr.conf.erb'),
|
|
notify => Service[$service_name],
|
|
}
|
|
|
|
file { '/etc/frr/daemons':
|
|
ensure => file,
|
|
content => template('frrouting/daemons.erb'),
|
|
notify => Service[$service_name],
|
|
}
|
|
}
|
|
|
|
if $facts['os']['release']['major'] == '8' {
|
|
systemd::manage_dropin { 'default_nice_level.conf':
|
|
ensure => present,
|
|
unit => 'frr.service',
|
|
service_entry => {
|
|
'Nice' => 0,
|
|
},
|
|
notify => Service['frr'],
|
|
}
|
|
}
|
|
|
|
if $manage_service {
|
|
service { $service_name:
|
|
ensure => running,
|
|
enable => true,
|
|
hasstatus => true,
|
|
hasrestart => true,
|
|
}
|
|
}
|
|
|
|
if $mpls_ldp_router_id and $mpls_ldp_transport_addr and !empty($mpls_ldp_interfaces) {
|
|
file { '/etc/modules-load.d/mpls_ldp_modules.conf':
|
|
ensure => file,
|
|
content => @(EOT/L),
|
|
# Load MPLS Kernel Modules
|
|
mpls_router
|
|
mpls_iptunnel
|
|
| EOT
|
|
}
|
|
|
|
['mpls_router', 'mpls_iptunnel'].each |$mod| {
|
|
exec { "load_${mod}":
|
|
command => "/sbin/modprobe ${mod}",
|
|
unless => "/sbin/lsmod | /bin/grep -q ^${mod}",
|
|
path => ['/sbin', '/bin', '/usr/sbin', '/usr/bin'],
|
|
}
|
|
}
|
|
}
|
|
}
|