import paramiko import sys import base64 sys.stdout.reconfigure(encoding='utf-8') key_path = r"C:\Users\Snarf\.ssh\id_ed25519_snarfnet" # 1. Read npm-1 (*.snarfnet.net) from NPM on 140.44.4.71 cNpm = paramiko.SSHClient() cNpm.set_missing_host_key_policy(paramiko.AutoAddPolicy()) cNpm.connect("140.44.4.71", username="root", key_filename=key_path, timeout=5) stdin, stdout, stderr = cNpm.exec_command("docker exec $(docker ps -q -f name=nginx-proxy-manager_app) cat /etc/letsencrypt/live/npm-1/fullchain.pem") fullchain = stdout.read() stdin, stdout, stderr = cNpm.exec_command("docker exec $(docker ps -q -f name=nginx-proxy-manager_app) cat /etc/letsencrypt/live/npm-1/privkey.pem") privkey = stdout.read() cNpm.close() b64_crt = base64.b64encode(fullchain).decode('ascii') b64_key = base64.b64encode(privkey).decode('ascii') def apply_wildcard_secret(host, name): print(f"Creating secret tls-snarfnet-wildcard on {name} ({host})...") c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect(host, username="root", key_filename=key_path, timeout=5) cmd = f""" cat << 'EOF' | k3s kubectl apply -f - apiVersion: v1 kind: Secret metadata: name: tls-snarfnet-wildcard namespace: dns type: kubernetes.io/tls data: tls.crt: {b64_crt} tls.key: {b64_key} EOF """ stdin, stdout, stderr = c.exec_command(cmd) print(stdout.read().decode('utf-8')) c.close() apply_wildcard_secret("140.44.4.11", "Aerodrome") apply_wildcard_secret("140.44.4.41", "Spaceport")