GitHub Actions → Google Cloud sin llaves: Workload Identity Federation con gcloud y Terraform

Pool + proveedor OIDC con issuer token.actions.githubusercontent.com y attribute-condition por repository_owner; roles/iam.workloadIdentityUser al principalSet del repo; auth@v3 con workload_identity_provider y service_account. Sin secretos que rotar.

26 de septiembre de 2026 · 4 min

Grafana con SSO: entrar con el usuario local (?disableAutoLogin), roles que se pisan en cada login (skip_org_role_sync) y datasources aprovisionados con secretos

/login?disableAutoLogin=true para llegar al formulario local; grafana cli admin reset-admin-password si además olvidaste la contraseña. skip_org_role_sync: true por proveedor para que Grafana no sobrescriba roles; o role_attribute_path con role_attribute_strict. Datasources en provisioning/datasources con editable: false, secretos en secureJsonData, borrado con deleteDatasources o prune: true.

26 de septiembre de 2026 · 4 min

helmfile en producción: diff a tres bandas, 'already set in map', OCI 403, dependencias duplicadas y adoptar recursos que ya estaban desplegados

Tres variables (HELM_DIFF_THREE_WAY_MERGE, HELM_DIFF_NORMALIZE_MANIFESTS, HELMFILE_GOCCY_GOYAML), dos flags (–skip-diff-on-install, -l name=) y una regla: fija helm, helmfile y helm-diff en CI. Adoptar recursos existentes = etiqueta managed-by=Helm más anotaciones meta.helm.sh/release-name y release-namespace.

26 de septiembre de 2026 · 4 min

Importar dumps a Cloud SQL sin errores: DEFINER y SUPER (ERROR 1227) en MySQL, extensiones y owners en PostgreSQL

MySQL: mysqldump –hex-blob –single-transaction –set-gtid-purged=OFF –default-character-set=utf8mb4; DEFINER de usuarios que no existen en la instancia (o root@localhost) rompen la importación. PostgreSQL: pg_dump –format=plain –no-owner –no-acl y sed para comentar DROP/CREATE/COMMENT ON EXTENSION. Service account de la instancia con objectAdmin en el bucket; gcloud sql import sql con –database y –user.

26 de septiembre de 2026 · 6 min

Montar un disco qcow2 en el host con qemu-nbd (leer o reparar archivos de una VM apagada)

modprobe nbd max_part=16; qemu-nbd -c /dev/nbd0 vm.qcow2; partprobe; mount /dev/nbd0p1. Al terminar, umount y qemu-nbd -d, o la VM no arranca por el lock. VM apagada siempre; -r para solo leer.

26 de septiembre de 2026 · 4 min

Nextcloud: 'will not be accessible due to incompatible encoding' (archivos invisibles por nombres NFD o Latin-1)

convmv -f utf-8 -t utf-8 -r –notest –nfc y luego occ files:scan –all. Sin –notest solo simula. Para nombres Latin-1, convmv -f iso-8859-1 -t utf-8. Desde macOS, rsync –iconv=utf-8-mac,utf-8.

26 de septiembre de 2026 · 3 min

Oracle CQN con Python: enterarte de los cambios de una tabla sin polling (y por qué oracle_fdw no dispara triggers)

GRANT CHANGE NOTIFICATION; oracledb.connect(events=True); conn.subscribe(callback, operations, qos); sub.registerquery(‘select id, status from orders’). Sin polling. La base tiene que poder conectar a tu app (o usa client_initiated=True con Instant Client 19.4+).

26 de septiembre de 2026 · 4 min

pgbouncer: 'unsupported startup parameter: extra_float_digits' (y 'no such database')

ignore_startup_parameters = extra_float_digits, options en pgbouncer.ini y RELOAD. extra_float_digits se puede ignorar sin consecuencias; ‘options’ (search_path) no: ponlo en el rol con ALTER ROLE SET. ’no such database’ es que falta la entrada en [databases] o el comodín *.

26 de septiembre de 2026 · 3 min

PostgreSQL: cheat sheet de administración (filas por tabla, tamaños, sesiones, usuario de solo lectura)

Conteo exacto por tabla con el truco de xpath, estimación con pg_stat_user_tables, pg_size_pretty para tamaños, pg_terminate_backend o DROP DATABASE WITH (FORCE) para sesiones, y GRANT pg_read_all_data para el usuario de reportes.

26 de septiembre de 2026 · 4 min

Quitar Rancher de un clúster: cattle-system en Terminating, clústeres que no se dejan borrar, el webhook que bloquea todo y recuperar el admin

Para borrar todo: job rancher-cleanup y su verify. Para cirugía: quitar finalizers de metadata (patch) y no forzar spec.finalizers del namespace sin mirar antes qué recursos quedan; patch de finalizers en clusters.provisioning y clusters.management; exportar y borrar los webhooks rancher.cattle.io hasta que el pod vuelva; reset-password dentro del pod de Rancher.

26 de septiembre de 2026 · 4 min