This guide installs Atomia DNS prerequisites and deploys the application from a repository source.
- name: Deploy Atomia DNS on Debian family
hosts: atomia_dns_debian
become: true
vars:
atomia_dns_user: atomia-dns
atomia_dns_home: /opt/atomia-dns
atomia_dns_repo_url: "https://example.invalid/atomia-dns.git"
atomia_dns_repo_version: "main"
tasks:
- name: Install dependencies
ansible.builtin.apt:
update_cache: true
name:
- perl
- libjson-perl
- libdbi-perl
- libdbd-mysql-perl
- curl
- git
state: present
- name: Ensure Atomia DNS user exists
ansible.builtin.user:
name: "{{ atomia_dns_user }}"
system: true
create_home: false
shell: /usr/sbin/nologin
- name: Ensure installation directory exists
ansible.builtin.file:
path: "{{ atomia_dns_home }}"
state: directory
owner: "{{ atomia_dns_user }}"
group: "{{ atomia_dns_user }}"
mode: "0755"
- name: Clone Atomia DNS repository
ansible.builtin.git:
repo: "{{ atomia_dns_repo_url }}"
dest: "{{ atomia_dns_home }}"
version: "{{ atomia_dns_repo_version }}"
force: false
failed_when: false
- name: Write Atomia DNS base configuration
ansible.builtin.copy:
dest: /etc/atomia-dns.conf
mode: "0640"
owner: root
group: "{{ atomia_dns_user }}"
content: |
# Atomia DNS base configuration
api_listen = 0.0.0.0:8080
db_dsn = DBI:mysql:database=atomia_dns;host=127.0.0.1
db_user = atomia
db_password = change-me
- name: Install Atomia DNS systemd unit
ansible.builtin.copy:
dest: /etc/systemd/system/atomia-dns.service
mode: "0644"
content: |
[Unit]
Description=Atomia DNS
After=network.target
[Service]
Type=simple
User={{ atomia_dns_user }}
Group={{ atomia_dns_user }}
WorkingDirectory={{ atomia_dns_home }}
ExecStart=/usr/bin/perl {{ atomia_dns_home }}/bin/atomia-dns
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Enable and start Atomia DNS service
ansible.builtin.systemd:
name: atomia-dns
enabled: true
state: started
daemon_reload: true
- name: Deploy Atomia DNS on RHEL family
hosts: atomia_dns_rhel
become: true
vars:
atomia_dns_user: atomia-dns
atomia_dns_home: /opt/atomia-dns
atomia_dns_repo_url: "https://example.invalid/atomia-dns.git"
atomia_dns_repo_version: "main"
tasks:
- name: Install dependencies
ansible.builtin.dnf:
name:
- perl
- perl-DBI
- perl-DBD-MySQL
- curl
- git
state: present
- name: Ensure Atomia DNS user exists
ansible.builtin.user:
name: "{{ atomia_dns_user }}"
system: true
create_home: false
shell: /sbin/nologin
- name: Ensure installation directory exists
ansible.builtin.file:
path: "{{ atomia_dns_home }}"
state: directory
owner: "{{ atomia_dns_user }}"
group: "{{ atomia_dns_user }}"
mode: "0755"
- name: Clone Atomia DNS repository
ansible.builtin.git:
repo: "{{ atomia_dns_repo_url }}"
dest: "{{ atomia_dns_home }}"
version: "{{ atomia_dns_repo_version }}"
force: false
failed_when: false
- name: Write Atomia DNS base configuration
ansible.builtin.copy:
dest: /etc/atomia-dns.conf
mode: "0640"
owner: root
group: "{{ atomia_dns_user }}"
content: |
# Atomia DNS base configuration
api_listen = 0.0.0.0:8080
db_dsn = DBI:mysql:database=atomia_dns;host=127.0.0.1
db_user = atomia
db_password = change-me
- name: Install Atomia DNS systemd unit
ansible.builtin.copy:
dest: /etc/systemd/system/atomia-dns.service
mode: "0644"
content: |
[Unit]
Description=Atomia DNS
After=network.target
[Service]
Type=simple
User={{ atomia_dns_user }}
Group={{ atomia_dns_user }}
WorkingDirectory={{ atomia_dns_home }}
ExecStart=/usr/bin/perl {{ atomia_dns_home }}/bin/atomia-dns
Restart=on-failure
[Install]
WantedBy=multi-user.target
- name: Enable and start Atomia DNS service
ansible.builtin.systemd:
name: atomia-dns
enabled: true
state: started
daemon_reload: true
ansible-playbook -i inventory.ini atomia-dns-install.yml
atomia_dns_debian.atomia_dns_repo_url and atomia_dns_repo_version.Need custom Ansible playbooks for Atomia DNS deployments? We develop tailored automation solutions for hosting providers, including multi-tenant configurations and billing system integrations. Contact office@linux-server-admin.com or visit our contact page.