Fix resolv.conf search/nameserver
* Ensure additional nameserver/search, if defined as vars. * Don't backup changed dhclient hooks as they are going to be executed by dhclient as well, which is not what we want. * For debian OS family only: - Rename nodnsupdate hook the resolvconf hook to be sourced always before it. - Ensure dhclient restarted via network restart to apply the nodnsupdate hook. * For rhel OS family, the fix TBD, it doesn't work the same way. Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
parent
439a2e2678
commit
ea57ce7514
3 changed files with 36 additions and 4 deletions
12
roles/dnsmasq/defaults/main.yml
Normal file
12
roles/dnsmasq/defaults/main.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
# Existing search/nameserver resolvconf entries will be purged and
|
||||||
|
# ensured by this additional data:
|
||||||
|
|
||||||
|
# Max of 4 names is allowed and no more than 256 - 17 chars total
|
||||||
|
# (a 2 is reserved for the 'default.svc.' and'svc.')
|
||||||
|
#searchdomains:
|
||||||
|
# - foo.bar.lc
|
||||||
|
|
||||||
|
# Max of 2 is allowed here (a 1 is reserved for the dns_server)
|
||||||
|
#nameservers:
|
||||||
|
# - 127.0.0.1
|
10
roles/dnsmasq/handlers/main.yml
Normal file
10
roles/dnsmasq/handlers/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
- name: Dnsmasq | restart network
|
||||||
|
service:
|
||||||
|
name: >-
|
||||||
|
{% if ansible_os_family == "RedHat" -%}
|
||||||
|
network
|
||||||
|
{%- elif ansible_os_family == "Debian" -%}
|
||||||
|
networking
|
||||||
|
{%- endif %}
|
||||||
|
state: restarted
|
||||||
|
when: ansible_os_family != "CoreOS"
|
|
@ -68,9 +68,17 @@
|
||||||
resolvconffile: >-
|
resolvconffile: >-
|
||||||
{%- if resolvconf.rc == 0 -%}/etc/resolvconf/resolv.conf.d/head{%- else -%}/etc/resolv.conf{%- endif -%}
|
{%- if resolvconf.rc == 0 -%}/etc/resolvconf/resolv.conf.d/head{%- else -%}/etc/resolv.conf{%- endif -%}
|
||||||
|
|
||||||
|
- name: generate search domains to resolvconf
|
||||||
|
set_fact:
|
||||||
|
searchentries="{{ ([ 'default.svc.' + dns_domain, 'svc.' + dns_domain ] + searchdomains|default([])) | join(' ') }}"
|
||||||
|
|
||||||
|
- name: generate nameservers to resolvconf
|
||||||
|
set_fact:
|
||||||
|
nameserverentries="{{ nameservers|default([]) + [ dns_server ] }}"
|
||||||
|
|
||||||
- name: Add search resolv.conf
|
- name: Add search resolv.conf
|
||||||
lineinfile:
|
lineinfile:
|
||||||
line: "search {{ [ 'default.svc.' + dns_domain, 'svc.' + dns_domain, dns_domain ] | join(' ') }}"
|
line: "search {{searchentries}}"
|
||||||
dest: "{{resolvconffile}}"
|
dest: "{{resolvconffile}}"
|
||||||
state: present
|
state: present
|
||||||
insertbefore: BOF
|
insertbefore: BOF
|
||||||
|
@ -79,12 +87,13 @@
|
||||||
|
|
||||||
- name: Add local dnsmasq to resolv.conf
|
- name: Add local dnsmasq to resolv.conf
|
||||||
lineinfile:
|
lineinfile:
|
||||||
line: "nameserver {{dns_server}}"
|
line: "nameserver {{item}}"
|
||||||
dest: "{{resolvconffile}}"
|
dest: "{{resolvconffile}}"
|
||||||
state: present
|
state: present
|
||||||
insertafter: "^search.*$"
|
insertafter: "^search.*$"
|
||||||
backup: yes
|
backup: yes
|
||||||
follow: yes
|
follow: yes
|
||||||
|
with_items: "{{nameserverentries}}"
|
||||||
|
|
||||||
- name: Add options to resolv.conf
|
- name: Add options to resolv.conf
|
||||||
lineinfile:
|
lineinfile:
|
||||||
|
@ -100,11 +109,12 @@
|
||||||
- attempts:2
|
- attempts:2
|
||||||
|
|
||||||
- name: disable resolv.conf modification by dhclient
|
- name: disable resolv.conf modification by dhclient
|
||||||
copy: src=dhclient_nodnsupdate dest=/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate mode=0755 backup=yes
|
copy: src=dhclient_nodnsupdate dest=/etc/dhcp/dhclient-enter-hooks.d/znodnsupdate mode=0755
|
||||||
|
notify: Dnsmasq | restart network
|
||||||
when: ansible_os_family == "Debian"
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
- name: disable resolv.conf modification by dhclient
|
- name: disable resolv.conf modification by dhclient
|
||||||
copy: src=dhclient_nodnsupdate dest=/etc/dhcp/dhclient.d/nodnsupdate mode=u+x backup=yes
|
copy: src=dhclient_nodnsupdate dest=/etc/dhcp/dhclient.d/nodnsupdate mode=u+x
|
||||||
when: ansible_os_family == "RedHat"
|
when: ansible_os_family == "RedHat"
|
||||||
|
|
||||||
- name: update resolvconf
|
- name: update resolvconf
|
||||||
|
|
Loading…
Reference in a new issue