--- - name: Check for available port for cAdvisor shell: | for port in 8080 8081 8082 8083 8084 8085; do if ! ss -tulpn | grep -q ":${port} "; then echo "${port}" break fi done args: executable: /bin/bash register: available_port changed_when: false tags: cadvisor - name: Ensure Docker container for cAdvisor is running docker_container: name: cadvisor image: gcr.io/cadvisor/cadvisor:latest state: started restart_policy: always ports: - "{{ available_port.stdout | default('8084') }}:8080" volumes: - "/:/rootfs:ro" - "/var/run:/var/run:ro" - "/sys:/sys:ro" - "/var/lib/docker/:/var/lib/docker:ro" - "/dev/disk/:/dev/disk:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro" privileged: true devices: - "/dev/kmsg:/dev/kmsg" cgroup_parent: "docker.slice" tags: cadvisor - name: Display cAdvisor access info debug: msg: | cAdvisor is available at: - Web UI: http://{{ inventory_hostname }}:{{ available_port.stdout | default('8084') }} - Metrics: http://{{ inventory_hostname }}:{{ available_port.stdout | default('8084') }}/metrics tags: cadvisor