Escribir y restaurar secretos
Los verbos de escritura de la CLI escriben en un proyecto × entorno con las mismas garantías de la interfaz web: cada escritura es una nueva versión, el merge nunca borra claves ausentes y volver a ejecutar es un no-op seguro.
`secrets set` — una clave
$ movitera secrets set API_KEY=abc123 -p mi-app -e development
# o sin el valor en la línea de comandos (prompt sin eco / stdin):
$ cat clave.pem | movitera secrets set TLS_KEY -p mi-app -e production --comment "cert 2026"La respuesta dice qué ocurrió: creada, actualizada o "ya tenía ese valor — nada escrito". Reenviar el mismo valor y comentario es idempotente y no genera versión nueva.
`secrets upload` — un .env completo
$ movitera secrets upload .env -p mi-app -e development
# en CI, sin prompt:
$ movitera secrets upload .env -p mi-app -e development --yes- La CLI muestra la previsualización del servidor — conteos de nuevas, cambiadas e iguales — y pide confirmación; fuera de una terminal interactiva, la confirmación es obligatoria vía
--yes. - Los archivos con más de 1000 claves se trocean en lotes secuenciales automáticamente, y el resultado se imprime sumado.
- Siempre merge: las claves ausentes del archivo nunca se borran — volver a ejecutar en CI es un no-op seguro.
`secrets history` y `secrets rollback`
$ movitera secrets history DATABASE_URL -p mi-app -e production
$ movitera secrets rollback DATABASE_URL --version 4 -p mi-app -e production- El historial lista las versiones de más nuevas a más antiguas; usa
--limit Npara ver más. - El rollback añade una nueva versión con el valor restaurado — nunca reescribe el pasado.
Restaura a partir de un número listado
Los números de versión crecen por clave, pero no son contiguos y no necesariamente empiezan en 1 — una clave borrada y recreada continúa la numeración donde se quedó. Pasa un número listado por secrets history, nunca uno calculado.
Códigos de salida
| Código | Significado |
|---|---|
| 0 | Éxito. |
| 1 | Error de uso o fallo local — incluye escritura rechazada sin confirmación. |
| 2 | Fallo de API o red — el mensaje del servidor se reenvía con pista por código de error. |
| 126 / 127 | run: comando no ejecutable / no encontrado. |
Usa en CI con un token de deploy
- 1
Genera un token con alcance en la app web.
En Configuración del proyecto → Token de deploy, genera un token ligado al proyecto × entorno — menor privilegio: para solo leer, el alcance de lectura basta; las escrituras piden el alcance de escritura.
- 2
Guárdalo en el almacén de secretos del CI como `MOVITERA_TOKEN`.
- 3
En el job, direcciona por variables de entorno y ejecuta.
text# .github/workflows/deploy.yml (extracto) env: MOVITERA_TOKEN: ${{ secrets.MOVITERA_TOKEN }} MOVITERA_PROJECT: mi-app MOVITERA_ENV: production steps: - run: movitera run -- ./deploy.sh
- Un token con alcance solo funciona en las rutas de proyectos — las rutas legadas de Vault lo rechazan.
- ¿Se filtró? El radio de daño es un entorno, no el cofre.
- Los permisos del dueño se reevalúan en cada llamada — revocar el acceso del dueño rebaja el token al instante.
- Las lecturas vía token generan auditoría agrupada por hora, con contador — un bucle caliente no contamina el historial del equipo.