- name: Build OCI Stack hosts: OCI tasks: - name: Create folder ansible.builtin.file: path: ~/docker state: directory mode: '0755' - name: Create caddy folder ansible.builtin.file: path: ~/docker/caddy state: directory mode: '0755' - name: Create ddns folder ansible.builtin.file: path: ~/docker/ddns state: directory mode: '0755' - name: Copy encrypted docker-compose ansible.builtin.copy: src: ./vault/compose/docker-compose.yml dest: ~/docker - name: Copy encrypted Caddyfile ansible.builtin.copy: src: ./vault/caddy/Caddyfile dest: ~/docker/caddy/ - name: Copy encrypted ddns config ansible.builtin.copy: src: ./vault/ddns/ddns.json dest: ~/docker/ddns/config.json - name: Start container using Docker Compose ansible.builtin.command: cmd: docker compose up -d chdir: ~/docker - name: Pause for 30 seconds to allow containers to stabilize ansible.builtin.pause: seconds: 30 - name: Verify all containers are running ansible.builtin.shell: | expected=$(docker compose config --services | wc -l | tr -d ' ') running=$(docker compose ps --status running -q | wc -l | tr -d ' ') if [ "$expected" != "$running" ]; then echo "FAIL: $running/$expected containers running" docker compose ps exit 1 fi echo "OK: all $running containers running" args: chdir: ~/docker changed_when: false