diff --git a/roles/work_queue_webui/defaults/main.yml b/roles/work_queue_webui/defaults/main.yml new file mode 100644 index 0000000..955464d --- /dev/null +++ b/roles/work_queue_webui/defaults/main.yml @@ -0,0 +1,9 @@ +--- +work_queue_webui_base_path: "{{ base_config_dir }}/work-queue-webui" +work_queue_webui_data_path: "{{ work_queue_webui_base_path }}/data" + +work_queue_webui_image: "git.danhenry.dev/thelab/work-queue-webui:{{ work_queue_webui_image_tag }}" +work_queue_webui_image_tag: "latest" + +work_queue_webui_proxy_port: 8081 +work_queue_webui_container_port: 80 diff --git a/roles/work_queue_webui/handlers/main.yml b/roles/work_queue_webui/handlers/main.yml new file mode 100644 index 0000000..b5ef759 --- /dev/null +++ b/roles/work_queue_webui/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart Work Queue WebUI + community.docker.docker_compose_v2: + project_src: "{{ work_queue_webui_base_path }}" + state: restarted diff --git a/roles/work_queue_webui/meta/main.yml b/roles/work_queue_webui/meta/main.yml new file mode 100644 index 0000000..cb7d8e0 --- /dev/null +++ b/roles/work_queue_webui/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - role: docker diff --git a/roles/work_queue_webui/tasks/main.yml b/roles/work_queue_webui/tasks/main.yml new file mode 100644 index 0000000..86fa3e0 --- /dev/null +++ b/roles/work_queue_webui/tasks/main.yml @@ -0,0 +1,34 @@ +--- +- name: Create Work Queue WebUI directories + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ docker_uid }}" + group: "{{ docker_gid }}" + mode: '0755' + loop: + - "{{ work_queue_webui_base_path }}" + - "{{ work_queue_webui_data_path }}" + +- name: Deploy docker-compose.yml + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ work_queue_webui_base_path }}/docker-compose.yml" + owner: "{{ docker_uid }}" + group: "{{ docker_gid }}" + mode: '0600' + notify: Restart Work Queue WebUI + +- name: Deploy nginx reverse proxy config + ansible.builtin.template: + src: nginx.conf.j2 + dest: "{{ work_queue_webui_base_path }}/nginx.conf" + owner: "{{ docker_uid }}" + group: "{{ docker_gid }}" + mode: '0644' + notify: Restart Work Queue WebUI + +- name: Deploy Work Queue WebUI stack + community.docker.docker_compose_v2: + project_src: "{{ work_queue_webui_base_path }}" + state: present diff --git a/roles/work_queue_webui/templates/docker-compose.yml.j2 b/roles/work_queue_webui/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..4455f5e --- /dev/null +++ b/roles/work_queue_webui/templates/docker-compose.yml.j2 @@ -0,0 +1,24 @@ +--- +services: + webui: + image: {{ work_queue_webui_image }} + volumes: + - {{ work_queue_webui_data_path }}:/app/data + restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "-qO-", "http://localhost:80"] + interval: 30s + timeout: 10s + retries: 3 + + proxy: + image: nginx:alpine + ports: + - "{{ work_queue_webui_proxy_port }}:80" + volumes: + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + depends_on: + webui: + condition: service_healthy + restart: unless-stopped + diff --git a/roles/work_queue_webui/templates/nginx.conf.j2 b/roles/work_queue_webui/templates/nginx.conf.j2 new file mode 100644 index 0000000..d6e5de6 --- /dev/null +++ b/roles/work_queue_webui/templates/nginx.conf.j2 @@ -0,0 +1,12 @@ +server { + listen 80; + server_name _; + + location / { + proxy_pass http://webui:80; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +}