Files
cluster-knaster/platform/proxmox/ansible/roles/infra-stack/tasks/targets.yml
T
Robert RappandClaude Opus 5.5 4ac251715e
ci / test (push) Failing after 23s
k3s: Pod-Monitoring in Grafana (Task 6.5)
kube-state-metrics (NodePort 30808) und ServiceAccount prometheus-infra (nur
nodes/metrics) im Cluster; Prometheus auf infra liest kubelet/cAdvisor per TLS
gegen die k3s-CA. Ziele per file_sd aus kubectl get nodes, cAdvisor auf die
nötigen Reihen begrenzt. Dashboard "k3s – Pods" (Vorgabe nex), Alerts K3s*
nur mit notify. Playbook monitoring-k3s.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:31:03 +02:00

44 lines
1.9 KiB
YAML

# file_sd-Ziele der GPU-VMs (node, gpu, llamacpp). Auch einzeln aufrufbar: playbooks/monitoring-targets.yml
# (nach refresh-vm-access.sh, wenn sich DHCP-Adressen geändert haben). Prometheus liest die Dateien selbst neu.
# k3s (Task 6.5): kubelet und kube-state-metrics aus `kubectl get nodes` auf ops. Ist der Cluster nicht
# erreichbar, bleiben diese Listen leer und der Rest läuft weiter.
- name: k3s-Knoten lesen (auf ops)
ansible.builtin.shell: mkdir -p {{ infra_targets_dir }} && kubectl get nodes -o json > {{ infra_targets_dir }}/k3s-nodes.json
args:
executable: /bin/bash
delegate_to: localhost
run_once: true
register: k3s_nodes
failed_when: false
changed_when: false
- name: file_sd-Ziele aus tofu output erzeugen (auf ops)
ansible.builtin.shell: |
set -euo pipefail
tofu output -json gpu_vms | python3 {{ infra_repo_src }}/platform/proxmox/scripts/monitoring-targets.py \
--registry {{ infra_repo_src }}/sites/{{ knaster_site }}/registry.yaml --out {{ infra_targets_dir }} \
--llamacpp '{{ dict(_llamacpp_hosts | zip(_llamacpp_hosts | map('extract', hostvars, 'llamacpp_profiles'))) | to_json }}' \
{{ ('--k3s-nodes ' ~ infra_targets_dir ~ '/k3s-nodes.json') if k3s_nodes.rc == 0 else '' }}
args:
chdir: "{{ infra_tofu_dir }}"
executable: /bin/bash
delegate_to: localhost
run_once: true
vars:
# Profile je VM aus dem Inventar (Gruppe gpu_llamacpp, Task 6.1)
_llamacpp_hosts: "{{ groups['gpu_llamacpp'] | default([]) }}"
changed_when: false
- name: file_sd-Verzeichnis
ansible.builtin.file:
path: "{{ infra_state_dir }}/file_sd"
state: directory
mode: "0755"
- name: file_sd-Ziele in den Container kopieren
ansible.builtin.copy:
src: "{{ infra_targets_dir }}/{{ item }}.json"
dest: "{{ infra_state_dir }}/file_sd/{{ item }}.json"
mode: "0644"
loop: [node, gpu, llamacpp, kubelet, kube-state-metrics]