# Uso de Vault

## Inicialización de Vault y migración de secretos

### 1. Asegúrese de que los servicios están en ejecución

```bash
# Vault en la configuración se inicia mediante el perfil opcional vault

# Copie la configuración de vault (los archivos son reemplazados por nuevos)
cp -af ./vault/config/default/. ./vault/config

# Inicie los servicios con el perfil de BD seleccionado + perfil vault
# Opción 1: MariaDB + Vault
docker compose --profile mariadb --profile vault up -d

# Opción 2: PostgreSQL + Vault
docker compose --profile pg --profile vault up -d
```

### 2. Realice la inicialización y unseal de Vault

```bash
# Abra un shell en el contenedor de Vault
docker compose exec orchestrator-vault sh

# Dentro del contenedor:
vault operator init
# guarde todas las claves tras el comando
vault operator unseal
exit
```

Tras el `unseal`, es necesario habilitar `kv/` como `KV v1`.

```bash
# Abra un shell en el contenedor de Vault (si salió de él)
docker compose exec orchestrator-vault sh

# Dentro del contenedor:
# exporte el token root
export VAULT_TOKEN='su-root-token'

# Verificar mounts:
vault secrets list -detailed

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

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

exit
```

<details>

<summary>💡 Notas sobre la inicialización de Vault</summary>

**vault operator init** - inicializa Vault y muestra:

* `Unseal Key`
* `Initial Root Token`

**vault operator unseal** - quita el seal (ingrese el `Unseal Key` 3 veces del paso `init`)

</details>

### 3. Establezca el token en .env

```bash
# Configure la variable de entorno con el root-token
sed -i 's/^VAULT_TOKEN=.*/VAULT_TOKEN=root-token/' .env
```

### 4. Reinicie el orchestrator

```bash
# Aplique el nuevo valor de VAULT_TOKEN
docker compose restart orchestrator
```

### 5. Realice la migración de secretos a Vault

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

### (OPCIONAL) Migración inversa desde Vault a la BD (rollback)

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

El script restaura las contraseñas de robots y assets desde Vault de vuelta a la BD y las cifra utilizando `ORCHESTRATOR_ENCRYPTION_KEY`.

<details>

<summary>💡 Verificación del resultado del rollback</summary>

* la salida del comando debe contener las líneas `[OK] Robots: ... restored, ... failed` y `[OK] Assets: ... restored, ... failed`
* en las tablas `robots` y `assets`, los valores `VAULT_MIGRATED` deben ser reemplazados por contraseñas cifradas
* `docker compose logs -f orchestrator` no debe contener errores `Vault is not available`

</details>

<details>

<summary>💡 Verificación del resultado</summary>

* `docker compose ps` - los contenedores `orchestrator` y `orchestrator-vault` deben estar `Up`
* `docker compose logs -f orchestrator-vault` - verificación de los logs de Vault
* `docker compose logs -f orchestrator` - verificar que el backend se inició tras el reinicio sin errores de 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/es/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.
