--- - 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 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 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 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 docker_container: name: pdns-recursor image: pschiffe/pdns-recursor:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' networks_cli_compatible: true networks: - name: pdns-net volumes: - /etc/localtime:/etc/localtime:ro tags: - pdns-recursor - name: db docker_container: name: pdns-mariadb image: mariadb:10.6 pull: true state: '{{ c_state }}' networks_cli_compatible: true 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', 'mysqladmin', 'ping', '-h', 'localhost'] timeout: 10s retries: 5 tags: - db - name: phpmyadmin docker_container: name: pdns-phpmyadmin image: phpmyadmin/phpmyadmin:5 pull: true state: '{{ c_state }}' networks_cli_compatible: true networks: - name: pdns-net published_ports: - '8888:80' volumes: - /etc/localtime:/etc/localtime:ro tags: - db - name: build pdns 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 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 docker_container: name: pdns image: pschiffe/pdns-mysql:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' hostname: ns1.example.com networks_cli_compatible: true 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 docker_container: name: pdns-slave image: pschiffe/pdns-mysql:{{ "alpine" if alpine | bool else "latest" }} state: '{{ c_state }}' hostname: ns2.example.com networks_cli_compatible: true 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 base docker_image: name: pschiffe/pdns-admin-base tag: latest state: '{{ i_state }}' source: build force_source: true build: pull: true path: ./pdns-admin-base-ngoduykhanh tags: - pdns-admin - name: build pdns-admin backend docker_image: name: pschiffe/pdns-admin-uwsgi tag: latest state: '{{ i_state }}' source: build force_source: true build: pull: false path: ./pdns-admin-uwsgi-ngoduykhanh tags: - pdns-admin - name: build pdns-admin frontent docker_image: name: pschiffe/pdns-admin-static tag: latest state: '{{ i_state }}' source: build force_source: true build: pull: false path: ./pdns-admin-static-ngoduykhanh tags: - pdns-admin - name: pdns-admin backend docker_container: name: pdns-admin-uwsgi image: pschiffe/pdns-admin-uwsgi state: '{{ c_state }}' networks_cli_compatible: true networks: - name: pdns-net aliases: - pdns-admin-uwsgi volumes: - /etc/localtime:/etc/localtime:ro env: PDNS_ADMIN_SQLA_DB_PASSWORD: "'my-secret-pw'" PDNS_VERSION: "4.5" PDNS_API_KEY: "secret" tags: - pdns-admin - name: pdns-admin frontend docker_container: name: pdns-admin-static image: pschiffe/pdns-admin-static state: '{{ c_state }}' networks_cli_compatible: true networks: - name: pdns-net published_ports: - '8889:80' volumes: - /etc/localtime:/etc/localtime:ro tags: - pdns-admin - name: remove docker volumes command: docker volume rm pdns-mariadb-volume ignore_errors: true when: wipe | bool - name: remove network docker_network: name: pdns-net state: absent ignore_errors: true when: wipe | bool