--- - hosts: radon.n39.eu become: true vars: ansible_python_interpreter: /usr/bin/python3 data_dir: "/srv/data" mosquitto_image: eclipse-mosquitto:2.0.14 mosquitto_data: "{{ data_dir }}/mosquitto" nodered_image: nodered/node-red:3.0.1-1-18 nodered_data: "{{ data_dir }}/nodered" roles: - role: docker_setup vars: docker_data_root: "/srv/docker" tasks: - name: Ensure the mosquitto directories exist file: path: "{{ item }}" state: directory with_items: - "{{ mosquitto_data }}/config" - "{{ mosquitto_data }}/data" - "{{ mosquitto_data }}/log" - name: Make sure mosquitto config is there template: src: "templates/mosquitto.conf.j2" dest: "{{ mosquitto_data }}/config/mosquitto.conf" notify: restart mosquitto - name: Ensure mosquitto is running docker_container: name: mosquitto image: "{{ mosquitto_image }}" pull: true state: started ports: - 1883:1883 - 9001:9001 volumes: - "{{ mosquitto_data }}/config:/mosquitto/config" - "{{ mosquitto_data }}/data:/mosquitto/data" - "{{ mosquitto_data }}/log:/mosquitto/log" detach: yes keep_volumes: yes restart_policy: unless-stopped - name: Check if nodered data dir exists ansible.builtin.stat: path: "{{ data_dir }}/nodered" register: nodered_dir - name: Fail if nodered data dir does not exist ansible.builtin.fail: msg: "Nodered data dir is missing, please restore from the backup!" when: not nodered_dir.stat.exists - name: Ensure nodered is running docker_container: name: nodered image: "{{ nodered_image }}" pull: true state: started env: TZ: Europe/Berlin NODE_RED_ENABLE_PROJECTS: "true" ports: # - 127.0.0.1:9002:1880 - 9002:1880 volumes: - "{{ nodered_data }}/data:/data" detach: yes keep_volumes: yes restart_policy: unless-stopped handlers: - name: restart mosquitto docker_container: name: mosquitto state: started restart: yes