GUÍAGuide

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

bash
$ 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

bash
$ 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`

bash
$ 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 N para 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ódigoSignificado
0Éxito.
1Error de uso o fallo local — incluye escritura rechazada sin confirmación.
2Fallo de API o red — el mensaje del servidor se reenvía con pista por código de error.
126 / 127run: comando no ejecutable / no encontrado.

Usa en CI con un token de deploy

  1. 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. 2

    Guárdalo en el almacén de secretos del CI como `MOVITERA_TOKEN`.

  3. 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.

Siguiente