dnsmasq: add script for dynamic DNS updates
This commit is contained in:
parent
a3dd4eba65
commit
01a27e45ce
|
@ -2,6 +2,32 @@
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
- dnsmasq
|
- dnsmasq
|
||||||
|
- bind-tools
|
||||||
|
- krb5
|
||||||
|
- py3-pexpect
|
||||||
|
|
||||||
|
- name: Configure kerberos
|
||||||
|
template:
|
||||||
|
dest: /etc/krb5.conf
|
||||||
|
src: krb5.conf.j2
|
||||||
|
|
||||||
|
- name: Init kerberos keytab
|
||||||
|
expect:
|
||||||
|
command: ktutil
|
||||||
|
responses:
|
||||||
|
'.*:':
|
||||||
|
- 'add_entry -password -p {{ password.ldap_user }} -k 1 -e aes256-cts-hmac-sha1-96'
|
||||||
|
- '{{ password.ldap_pass }}'
|
||||||
|
- 'write_kt /etc/krb5.keytab'
|
||||||
|
- 'exit'
|
||||||
|
args:
|
||||||
|
creates: /etc/krb5.keytab
|
||||||
|
|
||||||
|
- name: Copy DNS updater script
|
||||||
|
template:
|
||||||
|
dest: "/usr/local/bin/dns-update"
|
||||||
|
src: "dns-update.j2"
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
- name: Configure dnsmasq
|
- name: Configure dnsmasq
|
||||||
template:
|
template:
|
||||||
|
@ -12,5 +38,4 @@
|
||||||
- 10-ranges.conf
|
- 10-ranges.conf
|
||||||
notify: restart dnsmasq
|
notify: restart dnsmasq
|
||||||
|
|
||||||
# TODO DNS update
|
|
||||||
# TODO netboot config
|
# TODO netboot config
|
||||||
|
|
|
@ -9,3 +9,5 @@ dhcp-proxy
|
||||||
|
|
||||||
dhcp-option = option:dns-server,{{ dns | join(',') }}
|
dhcp-option = option:dns-server,{{ dns | join(',') }}
|
||||||
dhcp-option = option:ntp-server,{{ ntp | join(',') }}
|
dhcp-option = option:ntp-server,{{ ntp | join(',') }}
|
||||||
|
|
||||||
|
dhcp-script = /usr/local/bin/dns-update
|
||||||
|
|
29
roles/dnsmasq/templates/dns-update.j2
Normal file
29
roles/dnsmasq/templates/dns-update.j2
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
domain={{ domain }}
|
||||||
|
ldap_user={{ password.ldap_user }}
|
||||||
|
ttl=3600
|
||||||
|
|
||||||
|
address="${3}"
|
||||||
|
|
||||||
|
case "${1}" in
|
||||||
|
add)
|
||||||
|
host="${4}"
|
||||||
|
kinit -k "${ldap_user}"
|
||||||
|
nsupdate -g <<EOF
|
||||||
|
update add ${host}.${domain} ${ttl} A ${address}
|
||||||
|
send
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
old)
|
||||||
|
if [ -n "${DNSMASQ_OLD_HOSTNAME}" -a -n "${DNSMASQ_SUPPLIED_HOSTNAME}" ] ; then
|
||||||
|
kinit -k "${ldap_user}"
|
||||||
|
nsupdate -g <<EOF
|
||||||
|
update del ${DNSMASQ_OLD_HOSTNAME}.${domain}
|
||||||
|
update add ${DNSMASQ_SUPPLIED_HOSTNAME}.${domain} ${ttl} A ${address}
|
||||||
|
send
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
# TODO del, probably
|
||||||
|
esac
|
18
roles/dnsmasq/templates/krb5.conf.j2
Normal file
18
roles/dnsmasq/templates/krb5.conf.j2
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[libdefaults]
|
||||||
|
dns_lookup_realm = false
|
||||||
|
ticket_lifetime = 24h
|
||||||
|
renew_lifetime = 7d
|
||||||
|
#forwardable = true
|
||||||
|
rdns = false
|
||||||
|
default_realm = {{ domain | upper }}
|
||||||
|
|
||||||
|
[realms]
|
||||||
|
{{ domain | upper }} = {
|
||||||
|
{% for server in dns %}
|
||||||
|
kdc = {{ server }}
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
|
||||||
|
[domain_realm]
|
||||||
|
.{{ domain }} = {{ domain | upper }}
|
||||||
|
{{ domain }} = {{ domain | upper }}
|
Loading…
Reference in a new issue