From 0d85bd53aa361592ed4f814facb9cc37d03b2596 Mon Sep 17 00:00:00 2001 From: Freazzzing <ссс999.11@mail.ru> Date: Wed, 4 Feb 2026 12:47:46 +0000 Subject: [PATCH] Enhance cAdvisor role and add deployment playbook - Updated cAdvisor default variables for better configuration - Modified cAdvisor tasks to improve deployment process - Added dedicated playbook for cAdvisor deployment and monitoring This commit completes the cAdvisor monitoring integration. --- playbooks/deploy-cadvisor.yml | 6 ++++ roles/cadvisor/defaults/main.yml | 13 ++++--- roles/cadvisor/tasks/main.yml | 62 ++++++++++++++------------------ 3 files changed, 41 insertions(+), 40 deletions(-) create mode 100644 playbooks/deploy-cadvisor.yml diff --git a/playbooks/deploy-cadvisor.yml b/playbooks/deploy-cadvisor.yml new file mode 100644 index 0000000..ad90663 --- /dev/null +++ b/playbooks/deploy-cadvisor.yml @@ -0,0 +1,6 @@ +--- +- name: Deploy cAdvisor on App3 + hosts: 192.168.0.112 # Указываем конкретный хост + become: true + roles: + - cadvisor diff --git a/roles/cadvisor/defaults/main.yml b/roles/cadvisor/defaults/main.yml index 5b69442..029556d 100644 --- a/roles/cadvisor/defaults/main.yml +++ b/roles/cadvisor/defaults/main.yml @@ -1,6 +1,9 @@ --- -# cAdvisor configuration -cadvisor_version: "latest" -cadvisor_port: 8081 -cadvisor_image: "gcr.io/cadvisor/cadvisor:{{ cadvisor_version }}" -cadvisor_container_name: "cadvisor" +# Default port for cAdvisor +cadvisor_port: 8080 + +# Network configuration +cadvisor_network_mode: "host" # Альтернатива: использовать host network для избежания конфликтов портов + +# Alternative: use different port if default is busy +cadvisor_fallback_ports: [8081, 8082, 8083, 8084] diff --git a/roles/cadvisor/tasks/main.yml b/roles/cadvisor/tasks/main.yml index 6fa7bbe..1d6fb43 100644 --- a/roles/cadvisor/tasks/main.yml +++ b/roles/cadvisor/tasks/main.yml @@ -1,51 +1,43 @@ --- -- name: Ensure cAdvisor container is running - community.docker.docker_container: - name: "{{ cadvisor_container_name }}" - image: "{{ cadvisor_image }}" +- 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: unless-stopped + restart_policy: always ports: - - "{{ cadvisor_port }}:8080" + - "{{ 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: Configure UFW for cAdvisor - ufw: - rule: allow - port: "{{ cadvisor_port }}" - proto: tcp - comment: "cAdvisor metrics" - tags: cadvisor - -- name: Wait for cAdvisor to be ready - wait_for: - port: "{{ cadvisor_port }}" - host: "{{ ansible_host }}" - delay: 2 - timeout: 60 - tags: cadvisor - -- name: Verify cAdvisor is accessible - uri: - url: "http://{{ ansible_host }}:{{ cadvisor_port }}/metrics" - return_content: true - status_code: 200 - register: cadvisor_check - until: cadvisor_check.status == 200 - retries: 5 - delay: 3 - tags: cadvisor - -- name: Show cAdvisor status +- name: Display cAdvisor access info debug: - msg: "cAdvisor successfully deployed at http://{{ ansible_host }}:{{ cadvisor_port }}/metrics" + 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 -- 2.48.1