--- - name: Check if Docker is installed command: docker --version register: docker_check ignore_errors: yes changed_when: false - name: Install cAdvisor (only on Docker hosts) block: - name: Create cAdvisor directories file: path: "{{ item }}" state: directory mode: '0755' loop: - "{{ cadvisor_base_dir }}" - "{{ cadvisor_config_dir }}" become: yes - name: Check if port {{ cadvisor_port }} is available wait_for: host: localhost port: "{{ cadvisor_port }}" state: stopped timeout: 5 ignore_errors: yes register: port_check become: no - name: Deploy cAdvisor docker-compose template: src: docker-compose.yml.j2 dest: "{{ cadvisor_base_dir }}/docker-compose.yml" owner: root group: root mode: '0644' become: yes - name: Stop existing cAdvisor container community.docker.docker_compose_v2: project_src: "{{ cadvisor_base_dir }}" state: absent become: yes ignore_errors: yes - name: Run cAdvisor container community.docker.docker_compose_v2: project_src: "{{ cadvisor_base_dir }}" state: present recreate: always become: yes register: cadvisor_start - name: Wait for cAdvisor to start wait_for: host: localhost port: "{{ cadvisor_port }}" timeout: 30 state: started become: no - name: Check cAdvisor container status shell: "docker ps -f name=cadvisor" register: container_info become: yes - name: Display container status debug: var: container_info.stdout - name: Get cAdvisor container logs if check failed shell: "docker logs cadvisor" register: cadvisor_logs become: yes when: container_info.rc != 0 or "'Up' not in container_info.stdout" - name: Display cAdvisor logs if container not running debug: var: cadvisor_logs.stdout when: cadvisor_logs is defined when: - docker_check.rc == 0 - cadvisor_enabled | default(true)