73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
import paramiko
|
|
import urllib.request
|
|
import ssl
|
|
import json
|
|
import sys
|
|
|
|
sys.stdout.reconfigure(encoding='utf-8')
|
|
key_path = r'C:\Users\Snarf\.ssh\id_ed25519_snarfnet'
|
|
|
|
print("1. Updating Authentik Provider 10 redirect_uris...")
|
|
ctx = ssl.create_default_context()
|
|
ctx.check_hostname = False
|
|
ctx.verify_mode = ssl.CERT_NONE
|
|
|
|
token = "SnarfNetPermanentAutomationToken2026"
|
|
headers = {
|
|
"Authorization": f"Bearer {token}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
provider_update = {
|
|
"redirect_uris": [
|
|
{"matching_mode": "strict", "url": "https://semaphore.snarfnet.net/auth/oidc/authentik/redirect"},
|
|
{"matching_mode": "strict", "url": "https://semaphore.snarfnet.net/api/auth/oidc/authentik/redirect/"},
|
|
{"matching_mode": "regex", "url": "https://semaphore\\.snarfnet\\.net/.*"}
|
|
]
|
|
}
|
|
|
|
req = urllib.request.Request(
|
|
"https://authentik.snarfnet.net/api/v3/providers/oauth2/10/",
|
|
headers=headers,
|
|
data=json.dumps(provider_update).encode('utf-8'),
|
|
method="PATCH"
|
|
)
|
|
try:
|
|
with urllib.request.urlopen(req, context=ctx, timeout=8) as resp:
|
|
res = json.loads(resp.read().decode())
|
|
print(" ✓ Authentik Provider 10 updated successfully:", res.get('redirect_uris'))
|
|
except Exception as e:
|
|
print(" ✗ Failed to update Authentik Provider 10:", e)
|
|
|
|
print("\n2. Applying updated Semaphore manifest to Spaceport (140.44.4.41)...")
|
|
manifest_path = r"C:\Users\Snarf\OneDrive\Desktop\code\SnarfCode\homelab-gitops-repo\manifests\spaceport\semaphore\semaphore.yaml"
|
|
with open(manifest_path, 'r', encoding='utf-8') as f:
|
|
content = f.read()
|
|
|
|
ssh = paramiko.SSHClient()
|
|
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
ssh.connect("140.44.4.41", username="root", key_filename=key_path, timeout=10)
|
|
|
|
stdin, stdout, stderr = ssh.exec_command("k3s kubectl apply -f -")
|
|
stdin.write(content)
|
|
stdin.channel.shutdown_write()
|
|
print("Apply output:", stdout.read().decode())
|
|
err = stderr.read().decode()
|
|
if err: print("Apply stderr:", err)
|
|
|
|
print("3. Rolling out Semaphore deployment...")
|
|
stdin, stdout, stderr = ssh.exec_command("k3s kubectl rollout restart deployment/semaphore -n infrastructure; k3s kubectl rollout status deployment/semaphore -n infrastructure --timeout=90s")
|
|
print(stdout.read().decode())
|
|
|
|
# Check new pod env
|
|
stdin, stdout, stderr = ssh.exec_command("k3s kubectl get pods -n infrastructure -l app.kubernetes.io/name=semaphore -o jsonpath='{.items[0].metadata.name}'")
|
|
new_pod = stdout.read().decode().strip()
|
|
print(f"New pod: {new_pod}")
|
|
|
|
stdin, stdout, stderr = ssh.exec_command(f"k3s kubectl exec -n infrastructure {new_pod} -- env | grep SEMAPHORE_OIDC_PROVIDERS")
|
|
print("New env:", stdout.read().decode())
|
|
|
|
ssh.close()
|
|
print("Done!")
|
|
|