--- - name: Check if Docker is installed command: docker --version register: docker_check ignore_errors: yes changed_when: false - name: Set default cadvisor port set_fact: cadvisor_port: "{{ cadvisor_port | default(8080) }}" when: docker_check.rc == 0 - name: Install cAdvisor (only on Docker hosts) block: - name: Create cAdvisor directories file: path: "{{ item }}" state: directory mode: '0755' loop: - "{{ cadvisor_base_dir | default('/opt/cadvisor') }}" - "{{ cadvisor_config_dir | default('/opt/cadvisor/config') }}" 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 | default('/opt/cadvisor') }}/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 | default('/opt/cadvisor') }}" state: absent become: yes ignore_errors: yes - name: Run cAdvisor container community.docker.docker_compose_v2: project_src: "{{ cadvisor_base_dir | default('/opt/cadvisor') }}" state: present recreate: always # ИСПРАВЛЕНО: always вместо yes 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 --format "table {{.Names}}\t{{.Status}}" register: container_info become: yes - name: Display container status debug: var: container_info.stdout - name: Verify cAdvisor is responding uri: url: "http://localhost:{{ cadvisor_port }}/metrics" status_code: 200 timeout: 10 register: cadvisor_check become: no - name: Show cAdvisor status debug: msg: "cAdvisor is running and responding on port {{ cadvisor_port }}" when: cadvisor_check.status == 200 when: - docker_check.rc == 0 - cadvisor_enabled | default(true)