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, ) { $daemons_defaults = { 'bgpd' => false, 'ospfd' => true, 'ospf6d' => 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, $daemons_defaults) 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 $manage_service { service { $service_name: ensure => running, enable => true, hasstatus => true, hasrestart => true, } } }