feat: add homelab deployment configs, documentation, and automation scripts
This commit is contained in:
129
scripts/update_grafana_yaml.py
Normal file
129
scripts/update_grafana_yaml.py
Normal file
@@ -0,0 +1,129 @@
|
||||
import json
|
||||
|
||||
with open("homelab-gitops-repo/manifests/aerodrome/grafana/ai-stack-dashboard.json") as f:
|
||||
dashboard_json = f.read()
|
||||
|
||||
with open("homelab-gitops-repo/manifests/aerodrome/grafana/grafana.yaml") as f:
|
||||
content = f.read()
|
||||
|
||||
# Replace volumeMounts
|
||||
old_mounts = """ volumeMounts:
|
||||
- mountPath: /etc/grafana/grafana.ini
|
||||
name: config
|
||||
subPath: grafana.ini
|
||||
- mountPath: /var/lib/grafana
|
||||
name: storage"""
|
||||
|
||||
new_mounts = """ volumeMounts:
|
||||
- mountPath: /etc/grafana/grafana.ini
|
||||
name: config
|
||||
subPath: grafana.ini
|
||||
- mountPath: /var/lib/grafana
|
||||
name: storage
|
||||
- mountPath: /etc/grafana/provisioning/datasources/datasources.yaml
|
||||
name: datasources-config
|
||||
subPath: datasources.yaml
|
||||
- mountPath: /etc/grafana/provisioning/dashboards/dashboards.yaml
|
||||
name: dashboards-provider-config
|
||||
subPath: dashboards.yaml
|
||||
- mountPath: /var/lib/grafana-dashboards/ai-stack-dashboard.json
|
||||
name: ai-stack-dashboard
|
||||
subPath: ai-stack-dashboard.json"""
|
||||
|
||||
assert old_mounts in content, "old_mounts not found"
|
||||
content = content.replace(old_mounts, new_mounts)
|
||||
|
||||
# Replace volumes
|
||||
old_vols = """ volumes:
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: grafana
|
||||
name: config
|
||||
- name: storage
|
||||
persistentVolumeClaim:
|
||||
claimName: grafana"""
|
||||
|
||||
new_vols = """ volumes:
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: grafana
|
||||
name: config
|
||||
- name: storage
|
||||
persistentVolumeClaim:
|
||||
claimName: grafana
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: grafana-datasources
|
||||
name: datasources-config
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: grafana-dashboards-provider
|
||||
name: dashboards-provider-config
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: grafana-dashboard-ai-stack
|
||||
name: ai-stack-dashboard"""
|
||||
|
||||
assert old_vols in content, "old_vols not found"
|
||||
content = content.replace(old_vols, new_vols)
|
||||
|
||||
# Append ConfigMaps at the bottom
|
||||
extra_cms = f"""---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: grafana-datasources
|
||||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: grafana
|
||||
data:
|
||||
datasources.yaml: |
|
||||
apiVersion: 1
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
url: http://prometheus:9090
|
||||
isDefault: true
|
||||
jsonData:
|
||||
timeInterval: 15s
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: grafana-dashboards-provider
|
||||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: grafana
|
||||
data:
|
||||
dashboards.yaml: |
|
||||
apiVersion: 1
|
||||
providers:
|
||||
- name: 'ai-stack-provider'
|
||||
orgId: 1
|
||||
folder: 'AI Stack & Inference'
|
||||
type: file
|
||||
disableDeletion: false
|
||||
editable: true
|
||||
options:
|
||||
path: /var/lib/grafana-dashboards
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: grafana-dashboard-ai-stack
|
||||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: grafana
|
||||
data:
|
||||
ai-stack-dashboard.json: |
|
||||
{chr(10).join(' ' + line for line in dashboard_json.splitlines())}
|
||||
"""
|
||||
|
||||
content = content.rstrip() + "\n" + extra_cms
|
||||
|
||||
with open("homelab-gitops-repo/manifests/aerodrome/grafana/grafana.yaml", "w") as f:
|
||||
f.write(content)
|
||||
|
||||
print("Updated grafana.yaml successfully!")
|
||||
|
||||
Reference in New Issue
Block a user