Enhance cAdvisor role and add deployment playbook #7

Merged
admin merged 1 commits from feature/add-cadvisor-support into main 2026-02-04 12:48:29 +00:00
3 changed files with 41 additions and 40 deletions
Showing only changes of commit 0d85bd53aa - Show all commits

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 # Default port for cAdvisor
cadvisor_version: "latest" cadvisor_port: 8080
cadvisor_port: 8081
cadvisor_image: "gcr.io/cadvisor/cadvisor:{{ cadvisor_version }}" # Network configuration
cadvisor_container_name: "cadvisor" 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 - name: Check for available port for cAdvisor
community.docker.docker_container: shell: |
name: "{{ cadvisor_container_name }}" for port in 8080 8081 8082 8083 8084 8085; do
image: "{{ cadvisor_image }}" 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 state: started
restart_policy: unless-stopped restart_policy: always
ports: ports:
- "{{ cadvisor_port }}:8080" - "{{ available_port.stdout | default('8084') }}:8080"
volumes: volumes:
- "/:/rootfs:ro" - "/:/rootfs:ro"
- "/var/run:/var/run:ro" - "/var/run:/var/run:ro"
- "/sys:/sys:ro" - "/sys:/sys:ro"
- "/var/lib/docker/:/var/lib/docker:ro" - "/var/lib/docker/:/var/lib/docker:ro"
- "/dev/disk/:/dev/disk:ro" - "/dev/disk/:/dev/disk:ro"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
privileged: true privileged: true
devices: devices:
- "/dev/kmsg:/dev/kmsg" - "/dev/kmsg:/dev/kmsg"
cgroup_parent: "docker.slice"
tags: cadvisor tags: cadvisor
- name: Configure UFW for cAdvisor - name: Display cAdvisor access info
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
debug: 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 tags: cadvisor