--- - name: PDNS hosts: localhost vars: pdns_master_ip: 172.5.0.20 pdns_slave_ip: 172.5.0.21 wipe: false c_state: '{{ "absent" if wipe | bool else "started" }}' i_state: present alpine: false tasks: - name: Create docker network community.docker.docker_network: name: pdns-net state: present ipam_config: - subnet: '172.5.0.0/16' gateway: '172.5.0.1' tags: - pdns - pdns-admin - pdns-recursor - name: Build pdns recursor community.docker.docker_image: name: pschiffe/pdns-recursor state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns-recursor tags: - pdns-recursor - name: Build pdns recursor alpine version community.docker.docker_image: name: pschiffe/pdns-recursor tag: alpine state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns-recursor dockerfile: Dockerfile.alpine tags: - pdns-recursor - name: PDNS recursor community.docker.docker_container: name: pdns-recursor image: pschiffe/pdns-recursor:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' networks: - name: pdns-net volumes: - /etc/localtime:/etc/localtime:ro ulimits: - 'nofile:5000:5000' tags: - pdns-recursor - name: DB community.docker.docker_container: name: pdns-mariadb image: mariadb:11 pull: true state: '{{ c_state }}' networks: - name: pdns-net aliases: - db - mysql volumes: - /etc/localtime:/etc/localtime:ro - pdns-mariadb-volume:/var/lib/mysql:z env: MYSQL_ROOT_PASSWORD: 'my-secret-pw' healthcheck: test: ['CMD', 'healthcheck.sh', '--su=mysql', '--connect', '--innodb_initialized'] timeout: 10s retries: 5 tags: - db - name: Phpmyadmin community.docker.docker_container: name: pdns-phpmyadmin image: phpmyadmin:5 pull: true state: '{{ c_state }}' networks: - name: pdns-net published_ports: - '8888:80' volumes: - /etc/localtime:/etc/localtime:ro tags: - db - name: Build pdns community.docker.docker_image: name: pschiffe/pdns-mysql state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns tags: - pdns - name: Build pdns alpine version community.docker.docker_image: name: pschiffe/pdns-mysql tag: alpine state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns dockerfile: Dockerfile.alpine tags: - pdns - name: PDNS master community.docker.docker_container: name: pdns image: pschiffe/pdns-mysql:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' hostname: ns1.example.com networks: - name: pdns-net ipv4_address: '{{ pdns_master_ip }}' etc_hosts: ns1.example.com: '{{ pdns_master_ip }}' ns2.example.com: '{{ pdns_slave_ip }}' volumes: - /etc/localtime:/etc/localtime:ro env: PDNS_gmysql_password: 'my-secret-pw' PDNS_master: 'yes' PDNS_api: 'yes' PDNS_api_key: 'secret' PDNS_webserver: 'yes' PDNS_webserver_address: '0.0.0.0' PDNS_webserver_allow_from: '172.5.0.0/16' PDNS_version_string: 'anonymous' PDNS_default_ttl: '1500' PDNS_allow_axfr_ips: '{{ pdns_slave_ip }}' PDNS_only_notify: '{{ pdns_slave_ip }}' tags: - pdns - name: PDNS slave community.docker.docker_container: name: pdns-slave image: pschiffe/pdns-mysql:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' hostname: ns2.example.com networks: - name: pdns-net ipv4_address: '{{ pdns_slave_ip }}' etc_hosts: ns1.example.com: '{{ pdns_master_ip }}' ns2.example.com: '{{ pdns_slave_ip }}' volumes: - /etc/localtime:/etc/localtime:ro env: PDNS_gmysql_dbname: 'powerdnsslave' PDNS_gmysql_password: 'my-secret-pw' PDNS_slave: 'yes' PDNS_superslave: 'yes' PDNS_webserver: 'yes' PDNS_webserver_address: '0.0.0.0' PDNS_webserver_allow_from: '172.5.0.0/16' PDNS_version_string: 'anonymous' PDNS_disable_axfr: 'yes' PDNS_allow_notify_from: '{{ pdns_master_ip }}' SUPERMASTER_IPS: '{{ pdns_master_ip }}' tags: - pdns - name: Build pdns-admin community.docker.docker_image: name: pschiffe/pdns-admin tag: latest state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns-admin tags: - pdns-admin - name: PDNS-admin community.docker.docker_container: name: pdns-admin image: pschiffe/pdns-admin state: '{{ c_state }}' networks: - name: pdns-net aliases: - pdns-admin published_ports: - '8889:8080' volumes: - /etc/localtime:/etc/localtime:ro env: PDNS_ADMIN_SQLA_DB_PASSWORD: 'my-secret-pw' PDNS_VERSION: '4.8' PDNS_API_KEY: 'secret' tags: - pdns-admin - name: Remove docker volume community.docker.docker_volume: name: pdns-mariadb-volume state: absent when: wipe | bool - name: Remove network community.docker.docker_network: name: pdns-net state: absent when: wipe | bool