Deploy Knot Resolver using Docker containers orchestrated by Ansible.
⚠️ Production Readiness Note:
- Version 6.x: Production-capable. Developers note limited production experience with Docker deployments.
- Kubernetes/SDN: Performance penalties may occur. Test thoroughly.
ansible-galaxy collection install community.docker
| Image | Version | Architecture | Status |
|---|---|---|---|
docker.io/cznic/knot-resolver:latest |
Latest v6 | multi-arch | ✅ Recommended |
docker.io/cznic/knot-resolver:6.1.0 |
Specific v6 | multi-arch | ✅ Stable |
---
- name: Deploy Knot Resolver with Docker
hosts: knot_resolver_servers
become: true
gather_facts: true
vars:
knot_resolver_version: "6.1.0"
knot_resolver_image: "docker.io/cznic/knot-resolver:{{ knot_resolver_version }}"
knot_resolver_container_name: "knot-resolver"
knot_resolver_base_dir: "/opt/knot-resolver"
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:
- "{{ knot_resolver_base_dir }}"
- "{{ knot_resolver_base_dir }}/config"
- "{{ knot_resolver_base_dir }}/cache"
- name: Deploy Docker Compose file
template:
src: docker-compose.yml.j2
dest: "{{ knot_resolver_base_dir }}/docker-compose.yml"
mode: '0644'
- name: Deploy configuration
template:
src: config.yaml.j2
dest: "{{ knot_resolver_base_dir }}/config/config.yaml"
mode: '0644'
notify: Restart Knot Resolver
- name: Start container
community.docker.docker_compose_v2:
project_src: "{{ knot_resolver_base_dir }}"
state: present
- name: Verify Knot Resolver 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 Knot Resolver
community.docker.docker_compose_v2:
project_src: "{{ knot_resolver_base_dir }}"
state: present
restarted: true
# Run the playbook
ansible-playbook -i inventory.ini site.yml
# Verify
docker ps | grep knot-resolver
dig @127.0.0.1 google.com
docker.io/cznic/knot-resolverBeyond this playbook, we offer:
Contact our automation team: office@linux-server-admin.com | Contact Page