134 lines
4.8 KiB
Plaintext
134 lines
4.8 KiB
Plaintext
# Only listen on the following interfaces
|
|
<%- if @pxeboot_interface != nil -%>
|
|
interface=<%= @pxeboot_interface %>
|
|
<%- end -%>
|
|
interface=<%= @mgmt_interface %>
|
|
<%- if @infra_interface != nil -%>
|
|
interface=<%= @infra_interface %>
|
|
<%- end -%>
|
|
<%- if @ironic_tftp_interface != nil -%>
|
|
interface=<%= @ironic_tftp_interface %>
|
|
<%- end -%>
|
|
bind-interfaces
|
|
|
|
# Serve addresses from the pxeboot subnet
|
|
dhcp-range=set:pxeboot,<%= @pxeboot_subnet_start %>,<%= @pxeboot_subnet_end %>,<%= @pxeboot_subnet_netmask %>,1h
|
|
|
|
# Serve addresses from the management subnet
|
|
dhcp-range=set:mgmt,<%= @mgmt_subnet_start %>,static,<%= @mgmt_subnet_netmask %>,1d
|
|
|
|
<%- if @mgmt_subnet_version == 4 -%>
|
|
<%- if @mgmt_gateway_address != nil -%>
|
|
dhcp-option=tag:mgmt,option:router,<%= @mgmt_gateway_address %>
|
|
<%- else -%>
|
|
# Use the floating controller address as the default route
|
|
dhcp-option=tag:mgmt,option:router,<%= @mgmt_controller_address %>
|
|
<%- end -%>
|
|
<%- end -%>
|
|
|
|
# Provide DNS services on the floating pxeboot address
|
|
dhcp-option=tag:pxeboot,option:dns-server,<%= @pxeboot_controller_address %>
|
|
|
|
<%- if @mgmt_subnet_version == 4 -%>
|
|
# Provide DNS services on the floating management address
|
|
dhcp-option=tag:mgmt,option:dns-server,<%= @mgmt_controller_address %>
|
|
dhcp-option=tag:mgmt,option:mtu,<%= @mgmt_network_mtu %>
|
|
<%- else -%>
|
|
dhcp-option=tag:mgmt,option6:dns-server,[<%= @mgmt_controller_address %>]
|
|
<%- end -%>
|
|
|
|
<%- if @infra_interface != nil -%>
|
|
# Serve addresses from the infrastructure subnet
|
|
dhcp-range=set:infra,<%= @infra_subnet_start %>,static,<%= @infra_subnet_netmask %>,1d
|
|
|
|
# Provide DNS services on the floating infrastructure address
|
|
<%- if @infra_subnet_version == 4 -%>
|
|
dhcp-option=tag:infra,option:dns-server
|
|
dhcp-option=tag:infra,option:router
|
|
dhcp-option=tag:infra,option:mtu,<%= @infra_network_mtu %>
|
|
<%- else -%>
|
|
dhcp-option=tag:infra,option6:dns-server
|
|
<%- end -%>
|
|
<%- end -%>
|
|
|
|
# Provide private option 224 as install_uuid
|
|
dhcp-option=224,<%= @install_uuid %>
|
|
dhcp-option=option6:224,<%= @install_uuid %>
|
|
|
|
# Configure PXE boot
|
|
|
|
# Enable UEFI support
|
|
# We use a different bootloader if the client is configured
|
|
# to UEFI vs BIOS (Legacy)
|
|
# Type Architecture Name
|
|
# ---- -----------------
|
|
# 0 Intel x86PC
|
|
# 1 NEC/PC98
|
|
# 2 EFI Itanium
|
|
# 3 DEC Alpha
|
|
# 4 Arc x86
|
|
# 5 Intel Lean Client
|
|
# 6 EFI IA32
|
|
# 7 EFI BC (EFI Byte Code)
|
|
# 8 EFI Xscale
|
|
# 9 EFI x86-64
|
|
#
|
|
dhcp-match=set:efi,option:client-arch,2
|
|
dhcp-match=set:efi,option:client-arch,6
|
|
dhcp-match=set:efi,option:client-arch,7
|
|
dhcp-match=set:efi,option:client-arch,8
|
|
dhcp-match=set:efi,option:client-arch,9
|
|
dhcp-match=set:bios,option:client-arch,0
|
|
dhcp-match=set:bios,option:client-arch,1
|
|
dhcp-match=set:bios,option:client-arch,3
|
|
dhcp-match=set:bios,option:client-arch,4
|
|
dhcp-match=set:bios,option:client-arch,5
|
|
|
|
# TFTP support
|
|
enable-tftp
|
|
tftp-max=200
|
|
<%- if @pxeboot_interface != nil -%>
|
|
tftp-root=/pxeboot,<%= @pxeboot_interface %>
|
|
<%- else -%>
|
|
tftp-root=/pxeboot,<%= @mgmt_interface %>
|
|
<%- end -%>
|
|
<%- if @ironic_tftp_interface != nil -%>
|
|
tftp-root=<%= @ironic_tftpboot_dir %>,<%= @ironic_tftp_interface %>
|
|
<%- end -%>
|
|
|
|
dhcp-boot=tag:bios,tag:pxeboot,pxelinux.0,<%= @pxeboot_hostname %>,<%= @pxeboot_controller_address %>
|
|
dhcp-boot=tag:bios,tag:mgmt,pxelinux.0,<%= @mgmt_hostname %>,<%= @mgmt_controller_address %>
|
|
|
|
dhcp-boot=tag:efi,tag:pxeboot,EFI/grubx64.efi,<%= @pxeboot_hostname %>,<%= @pxeboot_controller_address %>
|
|
dhcp-boot=tag:efi,tag:mgmt,EFI/grubx64.efi,<%= @mgmt_hostname %>,<%= @mgmt_controller_address %>
|
|
|
|
# Do not forward queries for plain names (no dots)
|
|
domain-needed
|
|
# Query the upstream servers in the order they appear. This is necessary when
|
|
# kubernetes is configured, to ensure we send queries for kubernetes names
|
|
# (ending in .cluster.local) to the kubernetes dns server first. In the future,
|
|
# we could add the kubernetes dns server using the "server" option, which would
|
|
# allow us to force all cluster.local names to go to that server.
|
|
strict-order
|
|
# Only keep entries in the cache for 5 seconds. This is required because the
|
|
# kubernetes dns server will reply to queries for services that do not yet
|
|
# exist with an SOA record containing a long TTL, which will result in dns
|
|
# queries failing for a very long time, even after the service comes up (e.g.
|
|
# after a host is rebooted).
|
|
max-cache-ttl=5
|
|
local=//
|
|
port=53
|
|
bogus-priv
|
|
clear-on-reload
|
|
user=root
|
|
|
|
# Invoke this script for each lease
|
|
dhcp-script=/usr/bin/sysinv-dnsmasq-lease-update
|
|
|
|
# Dynamic files are located on a replicated filesystem
|
|
dhcp-hostsfile=<%= @config_path %>/dnsmasq.hosts
|
|
dhcp-leasefile=<%= @config_path %>/dnsmasq.leases
|
|
addn-hosts=<%= @config_path %>/dnsmasq.addn_hosts
|
|
# File for distributed cloud subcloud ip translation
|
|
addn-hosts=<%= @config_path %>/dnsmasq.addn_hosts_dc
|