OpenBao - guida DevOps
OpenBao β Guida rapida DevOps
Scopo
Questa procedura descrive le attivitΓ da eseguire in Semaphore quando:
- viene deployata una nuova VM che deve utilizzare OpenBao;
- viene aggiunto un nuovo progetto Docker Compose su una VM giΓ configurata.
1. Nuova VM β Installazione OpenBao Agent
Per ogni nuova VM applicativa deve essere eseguito in Semaphore il playbook:
Install openbao agent
Il playbook:
- installa e configura OpenBao Agent;
- configura l'autenticazione AppRole;
- associa la VM al corretto gruppo e ambiente;
- prepara il filesystem utilizzato dall'Agent;
- abilita il servizio
openbao-agent.
Variabili richieste
Esempio:
{
"host": "v329",
"openbao_addr": "https://secretmanager.eagleprojects.cloud",
"group": "devops",
"env": "test",
"role_id": "<ROLE_ID>",
"secret_id": "<SECRET_ID>",
"vm_id": "329"
}
Significato dei parametri
| Variabile | Descrizione |
|---|---|
host |
Host Semaphore / inventory della VM |
openbao_addr |
Endpoint OpenBao raggiungibile tramite Caddy |
group |
Gruppo applicativo a cui appartiene la VM |
env |
Ambiente della VM, ad esempio dev, test, staging, prod |
role_id |
RoleID AppRole assegnato alla VM |
secret_id |
SecretID AppRole assegnato alla VM |
vm_id |
ID univoco della VM |
Attenzione alle credenziali AppRole
role_id e secret_id sono credenziali macchina.
In particolare il secret_id deve essere trattato come un secret:
- non inserirlo nella documentazione;
- non copiarlo nei ticket;
- non salvarlo in repository;
- non condividerlo in chat o canali non autorizzati;
- utilizzarlo esclusivamente durante il provisioning previsto.
2. Verifica dopo installazione Agent
Al termine del playbook verificare sulla VM:
systemctl status openbao-agent --no-pager
Il servizio deve risultare attivo.
Per controllare i log:
journalctl -u openbao-agent -n 100 --no-pager
Verificare inoltre che l'Agent riesca ad autenticarsi verso:
https://secretmanager.eagleprojects.cloud
3. Nuovo progetto Docker Compose
Quando viene aggiunto un nuovo progetto Docker Compose su una VM giΓ configurata con OpenBao Agent, deve essere eseguito in Semaphore il playbook:
openbao-register-compose
Esempio:
{
"host": "v913",
"nome_univoco_progetto": "dwh_utility",
"group": "bi",
"env": "test"
}
Significato dei parametri
| Variabile | Descrizione |
|---|---|
host |
VM sulla quale Γ¨ presente il Docker Compose |
nome_univoco_progetto |
Nome tecnico univoco del progetto |
group |
Gruppo proprietario del progetto |
env |
Ambiente della VM/progetto |
4. Regola fondamentale: nome univoco del progetto
La variabile:
nome_univoco_progetto
deve corrispondere esattamente al nome tecnico assegnato al progetto.
Deve essere identico lungo tutta la catena:
Repository
=
Registry
=
Ticket
=
OpenBao
=
nome_univoco_progetto
Esempio corretto:
Repository dwh_utility
Registry dwh_utility
Ticket dwh_utility
nome_univoco_progetto dwh_utility
OpenBao dwh_utility
Non utilizzare variazioni come:
dwh-utility
DWH Utility
dwhutility
dwh_utility_test
se il nome ufficiale del progetto Γ¨:
dwh_utility
Il nome non Γ¨ una descrizione leggibile del progetto: Γ¨ un identificativo tecnico utilizzato dalle automazioni.
5. Path OpenBao risultante
Il playbook associa il progetto al path:
kv/apps/<group>/<env>/<nome_univoco_progetto>
Con:
{
"nome_univoco_progetto": "dwh_utility",
"group": "bi",
"env": "test"
}
il secret corrispondente sarΓ :
kv/apps/bi/test/dwh_utility
Questo deve essere lo stesso path nel quale vengono gestite le variabili dalla Web UI OpenBao.
6. Flusso completo per una nuova VM
Creazione VM
β
creazione policy/AppRole OpenBao
β
ottenimento RoleID + SecretID
β
Semaphore
β
Install openbao agent
β
OpenBao Agent attivo
Successivamente, per ogni Compose:
nuovo progetto
β
verifica nome univoco
β
openbao-register-compose
β
registrazione template/configurazione
β
OpenBao Agent
β
.env generato
β
Docker Compose
7. Flusso per un nuovo progetto su VM esistente
Se la VM ha giΓ OpenBao Agent configurato, non deve essere rilanciato il playbook di installazione Agent.
Γ sufficiente:
Nuovo Docker Compose
β
verifica Repository / Registry / Ticket
β
recupero nome univoco progetto
β
Semaphore
β
openbao-register-compose
β
OpenBao
β
Agent
β
Docker Compose
8. Checklist DevOps
Nuova VM
- VM presente nell'inventory Semaphore.
-
groupcorretto. -
envcorretto. -
vm_idcorretto. - AppRole creato per la VM.
-
role_iddisponibile. -
secret_iddisponibile. - Eseguito
Install openbao agent. -
openbao-agent.serviceattivo.
Nuovo progetto
- Docker Compose presente sulla VM.
- Nome univoco verificato sul ticket.
- Nome coerente con repository e registry.
-
groupcorretto. -
envcorretto. - Eseguito
openbao-register-compose. - Path OpenBao corretto.
-
.envgenerato correttamente dall'Agent.
9. Regola operativa sintetica
NUOVA VM
β Install openbao agent
NUOVO DOCKER COMPOSE
β openbao-register-compose
e in entrambi i casi verificare sempre:
group
env
nome/ID VM
nome univoco progetto
Per i progetti, la regola principale rimane:
Repository = Registry = Ticket = OpenBao = nome_univoco_progetto
10. Schema di funzionamento
ββββββββββββββββββββββββββββ
β OpenBao Server β
β β
β KV Secrets Engine β
β kv/apps/<group>/<env>/* β
β β
β Policy RBAC β
β AppRole Auth β
βββββββββββββββ¬βββββββββββββ
β
β TLS
β
Secret retrieval API
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VM TARGET β
β β
β ββββββββββββββββββββββββ β
β β OpenBao Agent β β
β β β β
β β - AppRole Login β β
β β - Token management β β
β β - Secret rendering β β
β β - Auto refresh β β
β ββββββββββββ¬ββββββββββββ β
β β β
β β 1. Authenticate β
β β β
β βΌ β
β βββββββββββββββββββββββββ β
β β AppRole Authentication β β
β β β β
β β role_id β β
β β secret_id β β
β ββββββββββββ¬βββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββ β
β β OpenBao Token β β
β β β β
β β associato alla policy β β
β β agent-<group>-<env> β β
β ββββββββββββ¬βββββββββββββ β
β β β
β β 2. Read secrets β
β βΌ β
β βββββββββββββββββββββββββββββββ β
β β KV Secret Path β β
β β β β
β β kv/apps/prism/prod/* β β
β β β β
β ββββββββββββ¬βββββββββββββββββββ β
β β β
β β 3. Template rendering β
β βΌ β
β βββββββββββββββββββββββββββββββ β
β β /run/openbao-agent/ β β
β β β β
β β prism.env β β
β β β β
β β DB_PASSWORD=xxxxx β β
β β API_KEY=xxxxx β β
β β JWT_SECRET=xxxxx β β
β ββββββββββββ¬βββββββββββββββββββ β
β β β
β β systemd PathChanged β
β βΌ β
β βββββββββββββββββββββββββββββββ β
β β Reload Service β β
β β β β
β β openbao-compose-reload β β
β ββββββββββββ¬βββββββββββββββββββ β
β β β
ββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β docker compose restart / reload
βΌ
ββββββββββββββββββββββββββββββββ
β Docker Compose β
β β
β compose.yml β
β β
β services: β
β app: β
β env_file: β
β - /run/openbao-agent/ β
β prism.env β
β β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Docker Container β
β β
β Environment: β
β β
β DB_PASSWORD β
β API_KEY β
β JWT_SECRET β
βββββββββββββββββββ
No comments to display
No comments to display