40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
# 2026-03-17 13:05
|
|
# read_pg_user_secret.py — читает пароль пользователя managed PostgreSQL из k8s Secret.
|
|
# Используется из Terraform external data source, чтобы apply сам получал актуальный пароль
|
|
# даже для уже существующего пользователя, созданного вне текущего state.
|
|
|
|
import base64
|
|
import json
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def main():
|
|
# Читаем query от Terraform external provider из stdin.
|
|
query = json.load(sys.stdin)
|
|
namespace = query["namespace"]
|
|
secret_name = query["secret"]
|
|
|
|
# kubectl уже настроен на удалённой машине; читаем ровно поле data.password.
|
|
result = subprocess.run(
|
|
[
|
|
"kubectl",
|
|
"get",
|
|
"secret",
|
|
"-n",
|
|
namespace,
|
|
secret_name,
|
|
"-o",
|
|
"jsonpath={.data.password}",
|
|
],
|
|
check=True,
|
|
capture_output=True,
|
|
text=True,
|
|
)
|
|
|
|
password = base64.b64decode(result.stdout.strip()).decode()
|
|
json.dump({"password": password}, sys.stdout)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |