Files
SnarfCode/scripts/create_dns_wildcard_secret.py

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")