42 lines
1.6 KiB
YAML
42 lines
1.6 KiB
YAML
---
|
|
# roles/swarm_dozzle_agent/tasks/main.yml
|
|
# Deploy a global Dozzle agent service so the Watchtower Dozzle UI can read logs from all swarm nodes.
|
|
|
|
- name: Check if dozzle-agent service exists
|
|
ansible.builtin.command: docker service ls --format '{{"{{"}}.Name{{"}}"}}'
|
|
register: swarm_services
|
|
changed_when: false
|
|
|
|
- name: Create dozzle-agent swarm service
|
|
ansible.builtin.command: >-
|
|
docker service create
|
|
--name {{ dozzle_agent_service_name }}
|
|
--mode global
|
|
--restart-condition any
|
|
--publish mode=host,target={{ dozzle_agent_port }},published={{ dozzle_agent_port }}
|
|
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,ro
|
|
{{ dozzle_agent_image }}
|
|
agent
|
|
when: dozzle_agent_service_name not in swarm_services.stdout_lines
|
|
|
|
- name: Update dozzle-agent swarm service
|
|
ansible.builtin.command: >-
|
|
docker service update
|
|
--image {{ dozzle_agent_image }}
|
|
--force
|
|
{{ dozzle_agent_service_name }}
|
|
when: dozzle_agent_service_name in swarm_services.stdout_lines
|
|
changed_when: true
|
|
|
|
- name: Verify dozzle-agent is running globally
|
|
ansible.builtin.command: docker service ps --filter desired-state=running {{ dozzle_agent_service_name }} --format '{{"{{"}}.Node{{"}}"}}'
|
|
register: dozzle_agent_ps
|
|
changed_when: false
|
|
|
|
- name: Assert dozzle-agent replicas running on all nodes
|
|
ansible.builtin.assert:
|
|
that:
|
|
- dozzle_agent_ps.stdout_lines | length >= groups['swarm_hosts'] | length
|
|
fail_msg: "Dozzle agents are not running on all swarm nodes yet"
|
|
success_msg: "Dozzle agents running across swarm nodes"
|