infracloud/dev-scripts/sync_to_civo.py

52 lines
1.7 KiB
Python

import boto3
import os
from botocore.config import Config
# Configurações Civo (extraídas do arquivo de credenciais)
ACCESS_KEY = "0UZ69TH03Q292DMTB82B"
SECRET_KEY = "JJ5XXZYvoWdnqBCNP5oREjACyrXeH6EgSqeSybT7"
ENDPOINT = "https://objectstore.nyc1.civo.com"
BUCKET_NAME = "rede5"
REGION = "NYC1"
SSH_DIR = os.path.expanduser("~/.ssh")
S3_PREFIX = "vault/ssh/"
def sync_to_civo():
print(f"--- Sincronizando ~/.ssh com Civo Object Storage ({BUCKET_NAME}) ---")
# Configurar cliente S3 compatível
s3 = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
endpoint_url=ENDPOINT,
region_name=REGION,
config=Config(
signature_version='s3v4',
s3={'addressing_style': 'path'}
)
)
files_to_sync = [
"civo", "github", "ic-ad", "cloudflare-token",
"cloudflare-token-inventcloud", "coolify-redbull-token",
"forgejo-token", "github-token", "monday.env",
"bookstack-token", "openproject-token"
]
for filename in os.listdir(SSH_DIR):
# Sincronizar apenas arquivos conhecidos ou novos tokens
if filename in files_to_sync or filename.endswith("-token") or filename.endswith(".env"):
local_path = os.path.join(SSH_DIR, filename)
if os.path.isfile(local_path):
s3_path = f"{S3_PREFIX}{filename}"
print(f"Subindo {filename} -> {s3_path}...")
try:
s3.upload_file(local_path, BUCKET_NAME, s3_path)
print(f" OK: {filename} sincronizado.")
except Exception as e:
print(f" Erro ao subir {filename}: {e}")
if __name__ == "__main__":
sync_to_civo()