49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
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")
|
|
|