--- - 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" rabbitmq_image: "bitnami/rabbitmq:3.10.7" rabbitmq_data: "{{ data_dir }}/rabbitmq" pwr_meter_pulse_gw_image: "netz39/power-meter-pulse-gateway:0.2.1" roles: - role: docker_setup vars: docker_data_root: "/srv/docker" - role: apache - role: ansible-role-dehydrated vars: dehydrated_contact_email: "{{ server_admin }}" dehydrated_domains: - name: nodered.n39.eu - name: rabbitmq.n39.eu 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 volumes: - "{{ nodered_data }}/data:/data" detach: yes keep_volumes: yes restart_policy: unless-stopped - name: Setup proxy site nodered.n39.eu include_role: name: setup-http-site-proxy vars: site_name: "nodered.n39.eu" proxy_port: 9002 - name: Check if rabbitmq data dir exists ansible.builtin.stat: path: "{{ rabbitmq_data }}" register: rabbitmq_dir - name: Fail if rabbitmq data dir does not exist ansible.builtin.fail: msg: "RabbitMQ data dir is missing, please restore from the backup!" when: not rabbitmq_dir.stat.exists - name: Ensure rabbitmq docker container is running docker_container: name: rabbitmq image: "{{ rabbitmq_image }}" ports: - 4369:4369 - 5551:5551 - 5552:5552 - 5672:5672 - 25672:25672 - 127.0.0.1:15672:15672 env: RABBITMQ_SECURE_PASSWORD: "yes" volumes: - "{{ rabbitmq_data }}/bitnami:/bitnami:rw" - "{{ rabbitmq_data }}/etc_rabbitmq:/etc/rabbitmq:rw" - name: Setup proxy site rabbitmq.n39.eu include_role: name: setup-http-site-proxy vars: site_name: "rabbitmq.n39.eu" proxy_port: 15672 - name: Ensure Power Meter Pulse Gateway for 19i room is running docker_container: name: pwr-meter-pulse-gw-19i image: "{{ pwr_meter_pulse_gw_image }}" ports: # - 127.0.0.1:9003:8080 - 9003:8080 env: AMQP_HOST: "rabbitmq.n39.eu" AMQP_USER: "{{ pwr_meter_amqp_user }}" AMQP_PASS: "{{ pwr_meter_amqp_pass }}" AMQP_VHOST: "/iot" PULSE_BINDING: "pwr-meter-pulse-19i" API_TOKEN: "{{ pwr_meter_api_token }}" # TODO HTTPS ingress, when #727 is resolved handlers: - name: restart mosquitto docker_container: name: mosquitto state: started restart: yes