dnsmasq: add script for dynamic DNS updates
This commit is contained in:
parent
a3dd4eba65
commit
01a27e45ce
|
@ -2,6 +2,32 @@
|
|||
package:
|
||||
name:
|
||||
- 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
|
||||
template:
|
||||
|
@ -12,5 +38,4 @@
|
|||
- 10-ranges.conf
|
||||
notify: restart dnsmasq
|
||||
|
||||
# TODO DNS update
|
||||
# TODO netboot config
|
||||
|
|
|
@ -9,3 +9,5 @@ dhcp-proxy
|
|||
|
||||
dhcp-option = option:dns-server,{{ dns | 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