This guide installs DNSControl as a standalone binary and prepares a managed configuration directory.
/usr/local/bin/dnscontrol/etc/dnscontrol for creds.json and dnsconfig.jsdnscontrol version- name: Install DNSControl on Debian family
hosts: dnscontrol_debian
become: true
vars:
dnscontrol_version: "4.13.0"
dnscontrol_arch: "linux_amd64"
dnscontrol_url: "https://github.com/StackExchange/dnscontrol/releases/download/v{{ dnscontrol_version }}/dnscontrol-{{ dnscontrol_version }}-{{ dnscontrol_arch }}"
tasks:
- name: Install dependencies
ansible.builtin.apt:
update_cache: true
name:
- ca-certificates
- curl
state: present
- name: Download DNSControl binary
ansible.builtin.get_url:
url: "{{ dnscontrol_url }}"
dest: /usr/local/bin/dnscontrol
mode: "0755"
- name: Ensure DNSControl configuration directory exists
ansible.builtin.file:
path: /etc/dnscontrol
state: directory
mode: "0700"
- name: Write example creds.json
ansible.builtin.copy:
dest: /etc/dnscontrol/creds.json
mode: "0600"
force: false
content: |
{
"example_provider": {
"TYPE": "BIND"
}
}
- name: Write example dnsconfig.js
ansible.builtin.copy:
dest: /etc/dnscontrol/dnsconfig.js
mode: "0640"
force: false
content: |
var REG_NONE = NewRegistrar("none");
var DSP_BIND = NewDnsProvider("example_provider");
D("example.com", REG_NONE, DnsProvider(DSP_BIND));
- name: Verify DNSControl installation
ansible.builtin.command: dnscontrol version
changed_when: false
- name: Install DNSControl on RHEL family
hosts: dnscontrol_rhel
become: true
vars:
dnscontrol_version: "4.13.0"
dnscontrol_arch: "linux_amd64"
dnscontrol_url: "https://github.com/StackExchange/dnscontrol/releases/download/v{{ dnscontrol_version }}/dnscontrol-{{ dnscontrol_version }}-{{ dnscontrol_arch }}"
tasks:
- name: Install dependencies
ansible.builtin.dnf:
name:
- ca-certificates
- curl
state: present
- name: Download DNSControl binary
ansible.builtin.get_url:
url: "{{ dnscontrol_url }}"
dest: /usr/local/bin/dnscontrol
mode: "0755"
- name: Ensure DNSControl configuration directory exists
ansible.builtin.file:
path: /etc/dnscontrol
state: directory
mode: "0700"
- name: Write example creds.json
ansible.builtin.copy:
dest: /etc/dnscontrol/creds.json
mode: "0600"
force: false
content: |
{
"example_provider": {
"TYPE": "BIND"
}
}
- name: Write example dnsconfig.js
ansible.builtin.copy:
dest: /etc/dnscontrol/dnsconfig.js
mode: "0640"
force: false
content: |
var REG_NONE = NewRegistrar("none");
var DSP_BIND = NewDnsProvider("example_provider");
D("example.com", REG_NONE, DnsProvider(DSP_BIND));
- name: Verify DNSControl installation
ansible.builtin.command: dnscontrol version
changed_when: false
ansible-playbook -i inventory.ini dnscontrol-install.yml
dnscontrol_debian.dnscontrol_arch for ARM systems (linux_arm64) in inventory.Need help automating DNSControl deployments? We provide consulting for DNS-as-code implementations, custom provider configurations, and CI/CD pipeline integration. Contact office@linux-server-admin.com or visit our contact page.