Gravar e restaurar segredos
Os verbos de escrita da CLI gravam em um projeto × ambiente com as mesmas garantias da interface web: toda gravação é uma nova versão, o merge nunca apaga chaves ausentes e reexecutar é um no-op seguro.
`secrets set` — uma chave
$ movitera secrets set API_KEY=abc123 -p meu-app -e development
# ou sem o valor na linha de comando (prompt sem eco / stdin):
$ cat chave.pem | movitera secrets set TLS_KEY -p meu-app -e production --comment "cert 2026"A resposta diz o que aconteceu: criada, atualizada ou "já tinha esse valor — nada gravado". Reenviar o mesmo valor e comentário é idempotente e não gera versão nova.
`secrets upload` — um .env inteiro
$ movitera secrets upload .env -p meu-app -e development
# em CI, sem prompt:
$ movitera secrets upload .env -p meu-app -e development --yes- A CLI mostra a pré-visualização do servidor — contagens de novas, alteradas e iguais — e pede confirmação; fora de um terminal interativo, a confirmação é obrigatória via
--yes. - Arquivos com mais de 1000 chaves são fatiados em lotes sequenciais automaticamente, e o resultado é impresso somado.
- Merge sempre: chaves ausentes do arquivo nunca são apagadas — rodar de novo em CI é um no-op seguro.
`secrets history` e `secrets rollback`
$ movitera secrets history DATABASE_URL -p meu-app -e production
$ movitera secrets rollback DATABASE_URL --version 4 -p meu-app -e production- O histórico lista as versões das mais novas para as mais antigas; use
--limit Npara ver mais. - O rollback acrescenta uma nova versão com o valor restaurado — nunca reescreve o passado.
Restaure a partir de um número listado
Os números de versão são crescentes por chave, mas não contíguos e não necessariamente começam em 1 — uma chave apagada e recriada continua a numeração de onde parou. Passe um número listado por secrets history, nunca um calculado.
Códigos de saída
| Código | Significado |
|---|---|
| 0 | Sucesso. |
| 1 | Erro de uso ou falha local — inclui escrita recusada sem confirmação. |
| 2 | Falha de API ou rede — a mensagem do servidor é repassada com dica por código de erro. |
| 126 / 127 | run: comando não executável / não encontrado. |
Use em CI com um token de deploy
- 1
Gere um token com escopo no app web.
Em Configurações do projeto → Token de deploy, gere um token preso ao projeto × ambiente — menor privilégio: para só ler, o escopo de leitura basta; escritas pedem o escopo de escrita.
- 2
Guarde-o no secret store do CI como `MOVITERA_TOKEN`.
- 3
No job, enderece por variáveis de ambiente e rode.
text# .github/workflows/deploy.yml (trecho) env: MOVITERA_TOKEN: ${{ secrets.MOVITERA_TOKEN }} MOVITERA_PROJECT: meu-app MOVITERA_ENV: production steps: - run: movitera run -- ./deploy.sh
- Um token com escopo funciona apenas nas rotas de projetos — as rotas legadas do Vault o recusam.
- Vazou? O raio de dano é um ambiente, não o cofre.
- As permissões do dono são reavaliadas a cada chamada — revogar o acesso do dono rebaixa o token na hora.
- As leituras via token geram auditoria agrupada por hora, com contador — um loop quente não polui o histórico do time.