From 5cab753ea8ae132ee4d57cd32d62b98b806f012d Mon Sep 17 00:00:00 2001 From: Maxime Bombar <bombar@crans.org> Date: Mon, 3 Aug 2020 01:21:05 +0200 Subject: [PATCH] [dhcp] Sanitize dhcp configuration --- group_vars/dhcp.yml | 164 ++++++++---------- host_vars/dhcp.adm.crans.org.yml | 7 + .../templates/default/isc-dhcp-server.j2 | 3 +- .../templates/dhcp/dhcpd.conf.j2 | 2 +- 4 files changed, 84 insertions(+), 92 deletions(-) diff --git a/group_vars/dhcp.yml b/group_vars/dhcp.yml index 314f2b0d..5054673b 100644 --- a/group_vars/dhcp.yml +++ b/group_vars/dhcp.yml @@ -6,93 +6,77 @@ dhcp: - { key: "interface-mtu", value: "1496" } global_parameters: [] subnets: - - { - network: "10.51.0.0/16", - deny_unknown: False, - interface: "eth4", - default_lease_time: "600", - max_lease_time: "7200", - routers: "10.51.0.10", - dns: ["10.51.0.152", "10.51.0.4"], - domain_name: "accueil.crans.org", - domain_search: "accueil.crans.org", - options: - [ - { key: "time-servers", value: "10.51.0.10" }, - { key: "ntp-servers", value: "10.51.0.10" }, - { key: "ip-forwarding", value: "off" }, - ], - range: ["10.51.1.0", "10.51.255.255"], - } - - { - network: "10.231.148.0/24", - deny_unknown: False, - interface: "eth2", - default_lease_time: "8600", - routers: "10.231.148.254", - dns: ["10.231.148.152", "10.231.148.4"], - domain_name: "borne.crans.org", - domain_search: "borne.crans.org", - options: - [ - { key: "time-servers", value: "10.231.148.98" }, - { key: "ntp-servers", value: "10.231.148.98" }, - { key: "ip-forwarding", value: "off" }, - ], - lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.borne.crans.org.list", - } - - { - network: "185.230.78.0/24", - deny_unknown: True, - interface: "enp1s3", - default_lease_time: "86400", - routers: "185.230.78.254", - dns: ["185.230.78.152", "185.230.78.4"], - domain_name: "adh.crans.org", - domain_search: "adh.crans.org", - options: - [ - { key: "time-servers", value: "185.230.79.98" }, - { key: "ntp-servers", value: "185.230.79.98" }, - { key: "ip-forwarding", value: "off" }, - { key: "smtp-server", value: "185.230.79.39" }, - ], - lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.adh.crans.org.list", - } - - { - network: "10.54.0.0/19", - deny_unknown: True, - interface: "eth6", - default_lease_time: "86400", - routers: "10.54.0.254", - dns: ["10.54.0.152", "10.54.0.4"], - domain_name: "fil.crans.org", - domain_search: "fil.crans.org", - options: - [ - { key: "time-servers", value: "185.230.79.98" }, - { key: "ntp-servers", value: "185.230.79.98" }, - { key: "ip-forwarding", value: "off" }, - { key: "smtp-server", value: "185.230.79.39" }, - ], - lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.fil.crans.org.list", - } - - { - network: "10.53.0.0/19", - deny_unknown: False, # For Federez - interface: "ens2", - default_lease_time: "86400", - routers: "10.53.0.254", - dns: ["10.53.0.152", "10.53.0.4"], - domain_name: "wifi.crans.org", - domain_search: "wifi.crans.org", - options: - [ - { key: "time-servers", value: "185.230.79.98" }, - { key: "ntp-servers", value: "185.230.79.98" }, - { key: "ip-forwarding", value: "off" }, - { key: "smtp-server", value: "185.230.79.39" }, - ], - lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.wifi.crans.org.list", - range: ["10.53.21.0", "10.53.25.254"] - } + - network: "10.51.0.0/16" + deny_unknown: False + vlan: "accueil" + default_lease_time: "600" + max_lease_time: "7200" + routers: "10.51.0.10" + dns: ["10.51.0.152", "10.51.0.4"] + domain_name: "accueil.crans.org" + domain_search: "accueil.crans.org" + options: + - { key: "time-servers", value: "10.51.0.10" } + - { key: "ntp-servers", value: "10.51.0.10" } + - { key: "ip-forwarding", value: "off" } + range: ["10.51.1.0", "10.51.255.255"] + + - network: "10.231.148.0/24" + deny_unknown: False + vlan: "bornes" + default_lease_time: "8600" + routers: "10.231.148.254" + dns: ["10.231.148.152", "10.231.148.4"] + domain_name: "borne.crans.org" + domain_search: "borne.crans.org" + options: + - { key: "time-servers", value: "10.231.148.98" } + - { key: "ntp-servers", value: "10.231.148.98" } + - { key: "ip-forwarding", value: "off" } + lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.borne.crans.org.list" + + - network: "185.230.78.0/24" + deny_unknown: True + vlan: "fil_pub" + default_lease_time: "86400" + routers: "185.230.78.254" + dns: ["185.230.78.152", "185.230.78.4"] + domain_name: "adh.crans.org" + domain_search: "adh.crans.org" + options: + - { key: "time-servers", value: "185.230.79.98" } + - { key: "ntp-servers", value: "185.230.79.98" } + - { key: "ip-forwarding", value: "off" } + - { key: "smtp-server", value: "185.230.79.39" } + lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.adh.crans.org.list" + + - network: "10.54.0.0/19" + deny_unknown: True + vlan: "fil_new" + default_lease_time: "86400" + routers: "10.54.0.254" + dns: ["10.54.0.152", "10.54.0.4"] + domain_name: "fil.crans.org" + domain_search: "fil.crans.org" + options: + - { key: "time-servers", value: "185.230.79.98" } + - { key: "ntp-servers", value: "185.230.79.98" } + - { key: "ip-forwarding", value: "off" } + - { key: "smtp-server", value: "185.230.79.39" } + lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.fil.crans.org.list" + + - network: "10.53.0.0/19" + deny_unknown: False # For Federez + vlan: "wifi_new" + default_lease_time: "86400" + routers: "10.53.0.254" + dns: ["10.53.0.152", "10.53.0.4"] + domain_name: "wifi.crans.org" + domain_search: "wifi.crans.org" + options: + - { key: "time-servers", value: "185.230.79.98" } + - { key: "ntp-servers", value: "185.230.79.98" } + - { key: "ip-forwarding", value: "off" } + - { key: "smtp-server", value: "185.230.79.39" } + lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.wifi.crans.org.list" + range: ["10.53.21.0", "10.53.25.254"] diff --git a/host_vars/dhcp.adm.crans.org.yml b/host_vars/dhcp.adm.crans.org.yml index f8fc096c..76d339f7 100644 --- a/host_vars/dhcp.adm.crans.org.yml +++ b/host_vars/dhcp.adm.crans.org.yml @@ -1,4 +1,11 @@ --- +interfaces: + adm: eth1 + bornes: eth2 + accueil: eth4 + fil_new: eth6 + wifi_new: ens2 + fil_pub: enp1s3 # rsync_client to_backup: diff --git a/roles/isc-dhcp-server/templates/default/isc-dhcp-server.j2 b/roles/isc-dhcp-server/templates/default/isc-dhcp-server.j2 index e769a8dd..a3ffa54d 100644 --- a/roles/isc-dhcp-server/templates/default/isc-dhcp-server.j2 +++ b/roles/isc-dhcp-server/templates/default/isc-dhcp-server.j2 @@ -14,5 +14,6 @@ # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". -INTERFACESv4="{{ dhcp | json_query('subnets[].interface[]') | join(" ") }}" +{# Awesome query to get all the interfaces used by dhcp server #} +INTERFACESv4="{{ dhcp | json_query('subnets[].vlan[]') | map('extract', interfaces) | join(' ') }}" INTERFACESv6="" diff --git a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 index 70b5f5e0..427cce50 100644 --- a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 +++ b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 @@ -36,7 +36,7 @@ include "./dhcp-failover.conf"; {% for subnet in dhcp.subnets %} subnet {{ subnet.network | ipaddr('network') }} netmask {{ subnet.network | ipaddr('netmask') }} { - interface "{{ subnet.interface }}"; + interface "{{ interfaces[subnet.vlan] }}"; {% if subnet.default_lease_time is defined %} default-lease-time {{ subnet.default_lease_time }}; {% endif %} -- GitLab