From 7abedce009148b659a9c6047b1128f0550748f0d Mon Sep 17 00:00:00 2001 From: Egor Matveev Date: Sun, 1 Jun 2025 19:24:11 +0300 Subject: [PATCH] fix --- .deploy/deploy-dev.yaml | 2 +- main.py | 29 +++++++++++++++++++---------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.deploy/deploy-dev.yaml b/.deploy/deploy-dev.yaml index 7a79063..ab92259 100644 --- a/.deploy/deploy-dev.yaml +++ b/.deploy/deploy-dev.yaml @@ -16,7 +16,7 @@ services: networks: - configurator deploy: - mode: replicated + mode: global restart_policy: condition: any update_config: diff --git a/main.py b/main.py index cf1f994..d7f56f2 100644 --- a/main.py +++ b/main.py @@ -25,25 +25,33 @@ def get_hosts() -> list[str]: return list(set(configurator.get_config("hosts") + ["platform.develop.chocomarsh.com"])) -def update_host(host: str): - gen_cert = call(f"docker exec -it $(docker ps -q -f name=infra-development_nginx) certbot --nginx --email emmtvv@gmail.com --agree-tos -d \"{host}\"") +def update_host(host: str) -> bool: + container_id_run = call(f"echo $(docker ps -q -f name=infra-development_nginx)") + if container_id_run.code != 0: + print(f"something wrong {container_id_run.err}") + return False + container_name = container_id_run.out + + gen_cert = call(f"docker exec -it {container_name} certbot --nginx --email emmtvv@gmail.com --agree-tos -d \"{host}\"") if gen_cert.code != 0: print(f"failed generating certificate: {gen_cert.err}") - return + return False - fullchain_command = call(f"docker exec -it $(docker ps -q -f name=infra_nginx) cat /etc/letsencrypt/live/{host}/fullchain.pem") + fullchain_command = call(f"docker exec -it {container_name} cat /etc/letsencrypt/live/{host}/fullchain.pem") if fullchain_command.code != 0: print(f"failed getting fullchain: {fullchain_command.err}") - return + return True - privkey_command = call(f"docker exec -it $(docker ps -q -f name=infra_nginx) cat /etc/letsencrypt/live/{host}/privkey.pem") + privkey_command = call(f"docker exec -it {container_name} cat /etc/letsencrypt/live/{host}/privkey.pem") if privkey_command.code != 0: print(f"failed getting fullchain: {privkey_command.err}") - return + return True + fullchain = fullchain_command.out.encode("utf-8") privkey = privkey_command.out.encode("utf-8") minio.put_object("certupdater", f"certificates/{host}/fullchain.pem", fullchain, len(fullchain)) minio.put_object("certupdater", f"certificates/{host}/privkey.pem", privkey, len(privkey)) + return True while True: @@ -51,7 +59,8 @@ while True: mongo_hosts = mongo.hosts for host in get_hosts(): if now + datetime.timedelta(days=14) > mongo_hosts.get(host, {"expire_time": datetime.datetime.fromtimestamp(1)})["expire_time"]: - update_host(host) - print(f"Host {host} updated") - mongo.update_date(host) + success = update_host(host) + if success: + print(f"Host {host} updated") + mongo.update_date(host) time.sleep(5 * 60) \ No newline at end of file -- 2.45.2