diff --git a/hieradata/roles/infra/dhcp/server.yaml b/hieradata/roles/infra/dhcp/server.yaml index 8dc6d38..39820b9 100644 --- a/hieradata/roles/infra/dhcp/server.yaml +++ b/hieradata/roles/infra/dhcp/server.yaml @@ -1,4 +1,52 @@ --- +hiera_include: + - frrouting + - profiles::dhcp::server + +# networking +anycast_ip: 198.18.19.18 +systemd::manage_networkd: true +systemd::manage_all_network_files: true +networking::interfaces: + eth0: + type: physical + forwarding: true + dhcp: true + anycast0: + type: dummy + ipaddress: "%{hiera('anycast_ip')}" + netmask: 255.255.255.255 + mtu: 1500 + +# frrouting +frrouting::ospfd_router_id: "%{facts.networking.ip}" +frrouting::ospfd_redistribute: + - connected +frrouting::ospfd_interfaces: + eth0: + area: 0.0.0.0 + anycast0: + area: 0.0.0.0 +frrouting::daemons: + ospfd: true + +# additional repos +profiles::yum::global::repos: + frr-extras: + name: frr-extras + descr: frr-extras repository + target: /etc/yum.repos.d/frr-extras.repo + baseurl: https://packagerepo.service.consul/frr/el9/extras-daily/%{facts.os.architecture}/os + gpgkey: https://packagerepo.service.consul/frr/el9/extras-daily/%{facts.os.architecture}/os/RPM-GPG-KEY-FRR + mirrorlist: absent + frr-stable: + name: frr-stable + descr: frr-stable repository + target: /etc/yum.repos.d/frr-stable.repo + baseurl: https://packagerepo.service.consul/frr/el9/stable-daily/%{facts.os.architecture}/os + gpgkey: https://packagerepo.service.consul/frr/el9/stable-daily/%{facts.os.architecture}/os/RPM-GPG-KEY-FRR + mirrorlist: absent + profiles::dhcp::server::ntpservers: - ntp01.main.unkin.net - ntp02.main.unkin.net diff --git a/hieradata/virtual/lxc.yaml b/hieradata/virtual/lxc.yaml index 8eb12d0..aacc2a3 100644 --- a/hieradata/virtual/lxc.yaml +++ b/hieradata/virtual/lxc.yaml @@ -8,3 +8,6 @@ vault::disable_mlock: true # manage jellyfin changes profiles::media::jellyfin::data_dir: /shared/apps/jellyfin + +# dhcp-server requirements +profiles::dhcp::server::empty_local_pool: true diff --git a/site/profiles/manifests/dhcp/server.pp b/site/profiles/manifests/dhcp/server.pp index 726ff19..3a950af 100644 --- a/site/profiles/manifests/dhcp/server.pp +++ b/site/profiles/manifests/dhcp/server.pp @@ -11,29 +11,35 @@ class profiles::dhcp::server ( Array[String] $globaloptions = [], Hash $pools = {}, Hash $classes = {}, + Boolean $empty_local_pool = false ){ - if $facts['enc_role'] == 'roles::infra::dhcp::server' { - class { 'dhcp': - service_ensure => running, - interfaces => $interfaces, - ntpservers => $ntpservers, - default_lease_time => $default_lease_time, - globaloptions => $globaloptions - } + class { 'dhcp': + service_ensure => running, + interfaces => $interfaces, + ntpservers => $ntpservers, + default_lease_time => $default_lease_time, + globaloptions => $globaloptions + } - # if pools, import them - $pools.each | $name, $data | { - dhcp::pool { $name: - * => $data, - } + # if pools, import them + $pools.each | $name, $data | { + dhcp::pool { $name: + * => $data, } + } - # if classes, import them - $classes.each | $name, $data | { - dhcp::dhcp_class { $name: - * => $data, - } + # if classes, import them + $classes.each | $name, $data | { + dhcp::dhcp_class { $name: + * => $data, + } + } + + if $empty_local_pool { + dhcp::pool {'local': + network => $facts['networking']['interfaces'][$network_primary_interface]['network'], + mask => $facts['networking']['interfaces'][$network_primary_interface]['netmask'], } } } diff --git a/site/roles/manifests/infra/dhcp/server.pp b/site/roles/manifests/infra/dhcp/server.pp index 1a27e17..91f6edb 100644 --- a/site/roles/manifests/infra/dhcp/server.pp +++ b/site/roles/manifests/infra/dhcp/server.pp @@ -6,6 +6,5 @@ class roles::infra::dhcp::server { }else{ include profiles::defaults include profiles::base - include profiles::dhcp::server } }