Importante: con workflow_call los secrets se pasan explícitamente con secrets: inherit o mapeándolos. Si usas entornos de GitHub, cada entorno tiene sus propios secrets y puedes referenciarlos en el workflow reutilizable usando environment: ${{ inputs.environment }}. Así evitas tenerlos en el nivel raíz. Para el script centralizado, si vas a usar Python, te recomiendo fabric o paramiko para el SSH, y manejar los secrets con variables de entorno que el workflow inyecta. Un antes/después claro: pasé de 15 workflows a 2, y el tiempo de actualización de dependencias pasó de horas a minutos. Sí, el primer mes es más trabajo, pero el ROI llega rápido. Eso sí, versiona los workflows con tags y usa ref en el uses, no te quieras comer un cambio rompedor en producción.