# Uso do Vault

## Inicialização do Vault e migração de segredos

### 1. Verifique se os serviços estão em execução

```bash
# O Vault na configuração é iniciado por meio do perfil opcional vault

# Copie a configuração do vault (os arquivos são substituídos pelos novos)
cp -af ./vault/config/default/. ./vault/config

# Inicie os serviços com o perfil de BD selecionado + perfil vault
# Opção 1: MariaDB + Vault
docker compose --profile mariadb --profile vault up -d

# Opção 2: PostgreSQL + Vault
docker compose --profile pg --profile vault up -d
```

### 2. Execute a inicialização e o unseal do Vault

```bash
# Abra um shell no contêiner do Vault
docker compose exec orchestrator-vault sh

# Dentro do contêiner:
vault operator init
# salve todas as chaves após o comando
vault operator unseal
exit
```

Após o `unseal`, é necessário habilitar `kv/` como `KV v1`.

```bash
# Abra um shell no contêiner do Vault (caso tenha saído)
docker compose exec orchestrator-vault sh

# Dentro do contêiner:
# exporte o root token
export VAULT_TOKEN='seu-root-token'

# Verificar mounts:
vault secrets list -detailed

# Habilitar KV v1 no mount kv/
vault secrets enable -path=kv -version=1 kv

# Verificar que kv/ aparece com map[version:1]
vault secrets list -detailed

exit
```

<details>

<summary>💡 Notas sobre a inicialização do Vault</summary>

**vault operator init** - inicializa o Vault e exibe:

* `Unseal Key`
* `Initial Root Token`

**vault operator unseal** - remove o seal (insira o `Unseal Key` 3 vezes a partir do passo `init`)

</details>

### 3. Defina o token no .env

```bash
# Configure a variável de ambiente com o root-token
sed -i 's/^VAULT_TOKEN=.*/VAULT_TOKEN=root-token/' .env
```

### 4. Reinicie o orchestrator

```bash
# Aplique o novo valor de VAULT_TOKEN
docker compose restart orchestrator
```

### 5. Execute a migração de segredos para o Vault

```bash
docker compose exec orchestrator php backend/bin/vault-migrate.php
```

### (OPCIONAL) Migração inversa do Vault para o BD (rollback)

```bash
docker compose exec orchestrator php backend/bin/vault-rollback.php
```

O script restaura as senhas de robôs e assets do Vault de volta para o BD e as criptografa usando `ORCHESTRATOR_ENCRYPTION_KEY`.

<details>

<summary>💡 Verificação do resultado do rollback</summary>

* a saída do comando deve conter as linhas `[OK] Robots: ... restored, ... failed` e `[OK] Assets: ... restored, ... failed`
* nas tabelas `robots` e `assets`, os valores `VAULT_MIGRATED` devem ser substituídos por senhas criptografadas
* `docker compose logs -f orchestrator` não deve conter erros `Vault is not available`

</details>

<details>

<summary>💡 Verificação do resultado</summary>

* `docker compose ps` - os contêineres `orchestrator` e `orchestrator-vault` devem estar `Up`
* `docker compose logs -f orchestrator-vault` - verificação dos logs do Vault
* `docker compose logs -f orchestrator` - verificar que o backend iniciou após a reinicialização sem erros do Vault

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-orchestrator/ustanovka-sherpa-orchestrator/s-ispolzovaniem-docker/ispolzovanie-vault.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
