--- - name: Setup UniFi Controller Docker Container hosts: your_target_host become: true vars: unifi_dir: /mnt/docker/unifi-controller cert_dir: "{{ unifi_dir }}/data/cert" cert_files: - unifi-controller.asmodee.local.crt - unifi-controller.asmodee.local.key - root-ca.crt tasks: - name: Create necessary directories file: path: "{{ item }}" state: directory loop: - "{{ unifi_dir }}" - "{{ cert_dir }}" - name: Create Docker Compose file for UniFi Controller copy: dest: "{{ unifi_dir }}/docker-compose.yaml" content: | version: "3" services: unifi-controller: image: jacobalberty/unifi:latest container_name: unifi-controller restart: unless-stopped healthcheck: test: grep -qr "java" /proc/*/status || exit 1 interval: 1m timeout: 30s retries: 3 ports: - 6789:6789 - 8080:8080 - 8443:8443 - 8843:8843 - 8880:8880 - 3478:3478/udp environment: - RUNAS_UID0=false volumes: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro - ./data:/unifi - ./run:/var/run/unifi networks: default: name: build external: true - name: Copy certificate files to UniFi directory copy: src: "{{ item }}" dest: "{{ cert_dir }}/{{ item }}" mode: '0600' loop: "{{ cert_files }}" - name: Append certificate to chain file command: cmd: "cat {{ cert_dir }}/{{ cert_files[0] }} >> {{ cert_dir }}/chain.pem" - name: Start Docker container with Docker Compose community.docker.docker_compose: project_src: "{{ unifi_dir }}" state: present restarted: yes