summaryrefslogtreecommitdiff
path: root/playbooks.d/dns-dnsmasq/playbook.bash
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks.d/dns-dnsmasq/playbook.bash')
-rw-r--r--playbooks.d/dns-dnsmasq/playbook.bash48
1 files changed, 48 insertions, 0 deletions
diff --git a/playbooks.d/dns-dnsmasq/playbook.bash b/playbooks.d/dns-dnsmasq/playbook.bash
new file mode 100644
index 0000000..f4be8cd
--- /dev/null
+++ b/playbooks.d/dns-dnsmasq/playbook.bash
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+playbook_add() {
+ info "$BASHTARD_PLAYBOOK" "Installing packages"
+ pkg install dnsmasq
+
+ playbook_sync
+
+ info "$BASHTARD_PLAYBOOK" "Enabling services"
+ svc enable dnsmasq
+ svc start dnsmasq
+}
+
+playbook_sync() {
+ mkdir -pv -- "$(config "fs.etcdir")/dnsmasq.d"
+
+ info "$BASHTARD_PLAYBOOK" "Writing config"
+ file_template "dnsmasq.conf" \
+ "host=$(config "dns.host")" \
+ "port=$(config "dns.port")" \
+ "domain=$(config "dns.domain")" \
+ "confd=$(config "fs.etcdir")/dnsmasq.d" \
+ > "$(config "fs.etcdir")/dnsmasq.conf"
+
+ while read -r key
+ do
+ printf "server=%s\n" "$(config "dns.upstream.$key")"
+ done < <(config_subkeys "dns.upstream") > "$(config "fs.etcdir")/dnsmasq.d/servers.conf"
+
+ while read -r key
+ do
+ printf "address=/$(config "dns.address.$key" | sed s@:@/@)\n"
+ done < <(config_subkeys "dns.address") > "$(config "fs.etcdir")/dnsmasq.d/addresses.conf"
+
+ [[ "$BASHTARD_COMMAND" == "add" ]] && return
+
+ info "$BASHTARD_PLAYBOOK" "Restarting services"
+ svc restart dnsmasq
+}
+
+playbook_del() {
+ info "$BASHTARD_PLAYBOOK" "Disabling services"
+ svc stop dnsmasq
+ svc disable dnsmasq
+
+ info "$BASHTARD_PLAYBOOK" "Uninstalling packages"
+ pkg uninstall dnsmasq
+}