Deploy this DNS application using Docker containers orchestrated by Ansible.
ansible-galaxy collection install community.docker
---
- name: Deploy DNS App with Docker
hosts: dns_servers
become: true
gather_facts: true
vars:
dns_image: "example/dns:latest"
dns_container_name: "dns-app"
dns_config_dir: "/opt/dns-app"
tasks:
- name: Install Docker dependencies
package:
name:
- docker
- docker-compose-plugin
state: present
- name: Ensure Docker service is running
systemd:
name: docker
state: started
enabled: true
- name: Create directories
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ dns_config_dir }}"
- "{{ dns_config_dir }}/config"
- name: Deploy Docker Compose file
template:
src: docker-compose.yml.j2
dest: "{{ dns_config_dir }}/docker-compose.yml"
mode: '0644'
- name: Deploy configuration
template:
src: config.j2
dest: "{{ dns_config_dir }}/config/config.conf"
mode: '0644'
notify: Restart DNS App
- name: Start container
community.docker.docker_compose_v2:
project_src: "{{ dns_config_dir }}"
state: present
- name: Verify DNS App is running
command: dig @127.0.0.1 google.com +short
register: dig_result
retries: 5
delay: 3
until: dig_result.rc == 0
changed_when: false
handlers:
- name: Restart DNS App
community.docker.docker_compose_v2:
project_src: "{{ dns_config_dir }}"
state: present
restarted: true
# Run the playbook
ansible-playbook -i inventory.ini site.yml
# Verify deployment
docker ps | grep dns-app
dig @127.0.0.1 google.com
latestWe develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact