Merge pull request 'Enhance cAdvisor role and add deployment playbook' (#7) from feature/add-cadvisor-support into main

Reviewed-on: #7
This commit is contained in:
2026-02-04 12:48:29 +00:00
3 changed files with 41 additions and 40 deletions

View File

@ -0,0 +1,6 @@
---
- name: Deploy cAdvisor on App3
hosts: 192.168.0.112 # Указываем конкретный хост
become: true
roles:
- cadvisor

View File

@ -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]

View File

@ -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