config/puppet-manifests/src/modules/platform/templates/dnsmasq.conf.erb
Bart Wensley 4a43480f6b Configure VIM to use pod based OpenStack services
When kubernetes is configured and the OpenStack application has
been installed, the VIM will be configured to access the OpenStack
services running in pods (keystone, nova, rabbitmq, etc...).

In order to support this, some extensions were done to the sysinv
helm code to allow parts of the OpenStack application
configuration to be retrieved (e.g. endpoint info). Changes
were also required to dnsmasq configuration to get resolution of
pod based names (e.g. keystone.openstack.svc.cluster.local)
working properly.

This commit is just the first step and has limitations. There is
no trigger to reconfigure the VIM after the OpenStack application
has been installed - a controller lock/unlock is required.

Story: 2003910
Task: 27852

Change-Id: I1c6dcdecd1365104457009196bbcf06b19c95489
Signed-off-by: Bart Wensley <barton.wensley@windriver.com>
2018-11-15 14:39:39 -06:00

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