fix
All checks were successful
Deploy Prod / Build (pull_request) Successful in 8s
Deploy Prod / Push (pull_request) Successful in 15s
Deploy Prod / prepare (pull_request) Successful in 3s
Deploy Prod / Deploy prod (pull_request) Successful in 30s

This commit is contained in:
Egor Matveev
2025-06-12 13:26:50 +03:00
parent 1f3bdc2bd3
commit e174ff26c4
4 changed files with 55 additions and 115 deletions

View File

@@ -1,6 +1,8 @@
from requests import get
import os
import sys
from minio import Minio
from urllib.request import urlopen
from json import loads
minio_client = Minio(
@@ -11,9 +13,20 @@ minio_client = Minio(
)
hosts = get(
"http://configurator/api/v1/fetch?project=certupdater&stage=production"
).json()["configs"]["hosts"]
def get(url):
with urlopen(url) as response:
data = response.read().decode("utf-8")
return loads(data)
try:
response = get(
"http://configurator/api/v1/fetch?project=certupdater&stage=production"
)
hosts = response["configs"]["hosts"]
except Exception as e:
print(f"Error fetching config: {e}", file=sys.stderr)
sys.exit(1)
config = ""
for host, params in hosts.items():
@@ -40,18 +53,30 @@ for host, params in hosts.items():
""".format(
host=host, target_host=params["host"], port=params["port"]
)
fullchain = minio_client.get_object(
"certupdater", f"certificates/{host}/fullchain.pem"
)
privkey = minio_client.get_object("certupdater", f"certificates/{host}/privkey.pem")
try:
os.mkdir(f"/etc/nginx/{host}")
except FileExistsError:
...
with open(f"/etc/nginx/{host}/fullchain.pem", "wb") as fp:
fp.write(fullchain.data)
with open(f"/etc/nginx/{host}/privkey.pem", "wb") as fp:
fp.write(privkey.data)
fullchain = minio_client.get_object(
"certupdater", f"certificates/{host}/fullchain.pem"
)
privkey = minio_client.get_object(
"certupdater", f"certificates/{host}/privkey.pem"
)
try:
os.makedirs(f"/etc/nginx/{host}", exist_ok=True)
except OSError as e:
print(f"Error creating directory: {e}", file=sys.stderr)
continue
with open("/etc/nginx/hosts.conf", "w") as fp:
fp.write(config)
with open(f"/etc/nginx/{host}/fullchain.pem", "wb") as fp:
fp.write(fullchain.data)
with open(f"/etc/nginx/{host}/privkey.pem", "wb") as fp:
fp.write(privkey.data)
except Exception as e:
print(f"Error processing host {host}: {e}", file=sys.stderr)
continue
try:
with open("/etc/nginx/hosts.conf", "w") as fp:
fp.write(config)
except Exception as e:
print(f"Error writing config file: {e}", file=sys.stderr)
sys.exit(1)