Come la CLI di DoiT Cloud Intelligence porta la gestione del cloud a un livello superiore
Abbiamo appena rilasciato la DoiT Cloud Intelligence CLI e non immaginate il sorriso che questo annuncio mi ha stampato in faccia. Forse sto tradendo la mia età, ma sono cresciuto in un mondo in cui scrivere script in bash sembrava un superpotere e chi padroneggiava grep era venerato come oggi veneriamo i data analyst più affilati. Ma sto divagando.
Ho colto al volo l'occasione di mettere alla prova la nostra CLI appena rilasciata e fin da subito ho imparato qualcosa. Abbiamo scelto restish come fondamento per la sua implementazione: a patto che la vostra API sia basata su OpenAPI (e quella di DoiT lo è), si occuperà di schema discovery e autenticazione.
Il setup
Per iniziare, ho seguito la nostra documentazione: ho installato restish tramite brew sul mio terminale e l'ho configurato per dialogare con le API di DoiT. Il profilo di default consente di personalizzare le chiamate; all'inizio non l'ho usato, ma lo riporto qui perché potrebbe interessare a qualcuno di voi.

È il momento di verificare che tutto funzioni: ho convalidato il login con il comando dedicato restish dci validate, che ha avviato il workflow OAuth (un saluto a Browserosaurus, un eccezionale browser selector di cui non posso più fare a meno).

Dopo l'accesso al mio tenant DoiT Cloud Intelligence, tutto in ordine: sono pronto a portare la gestione del cloud a un livello superiore tramite scripting.

L'obiettivo
Per il primo caso d'uso ho copiato spudoratamente ciò con cui i nostri clienti si sono scontrati per anni prima di affidarsi a DoiT: la cost accountability.
Volevo offrire ai clienti un percorso fluido e immediato per:
- invitare un nuovo utente su DoiT Cloud Intelligence;
- creare un'Allocation basata sul suo username, in grado di tracciare i costi generati;
- creare un budget collegato all'Allocation appena creata, capace di inviare notifiche al raggiungimento di una soglia specifica.
In questo modo ogni nuovo utente avrà un proprio feedback loop personale sui costi cloud, con il minimo attrito possibile. Cominciamo.
L'implementazione
Invitare l'utente
Più semplice di così non si può, il comando è:
restish dci invite-user email:<user_email>

l'e-mail è arrivata
Creare un'Allocation dedicata all'utente
Se siete nuovi da queste parti e non conoscete le Allocations, vi consiglio caldamente di familiarizzare con il concetto.
In sintesi: le Allocations permettono di raggruppare logicamente i costi cloud sulla base di qualsiasi dimensione di dato disponibile. Nel nostro caso, voglio raggruppare tutti i costi cloud generati dall'utente appena creato, così potrà monitorare facilmente la propria spesa.
Il comando è
restish dci create-allocation < allocation_conf.json
ma occorre passare alcuni parametri come configurazione. Mi prendo una piccola scorciatoia: do per scontato che nei nostri dati di billing esista una chiave Tag chiamata member, in cui ogni valore corrisponde a un cloud engineer (nel nostro caso, luca+test).
Il file conf.json sarà il seguente:
{
"name": "luca+test generated costs",
"description": "All costs generated by luca+test",
"rule": {
"formula": "A OR B",
"components": [\
{\
"key": "member",\
"type": "label",\
"mode": "is",\
"values": [\
"luca+test"\
]\
}\
]
}
}
L'esecuzione del comando restituisce l'id dell'Allocation, che ci tornerà utile a breve.

Creare un Budget dedicato all'utente
Il solo suono della parola "budget" mette i brividi alla maggior parte degli engineer con cui parlo: è sinonimo di innovazione frenata da restrizioni e barriere.
Riconosco che in passato sia potuto accadere, ma il modo in cui i Budget sono implementati in DoiT Cloud Intelligence costruisce un feedback loop produttivo tra i cloud engineer e i loro costi, in cui le brutte sorprese sono praticamente estinte e la consapevolezza è il mantra principale.
Per approfondire, vi rimando alla nostra documentazione, dove entriamo nel dettaglio di tutte le funzionalità.
Nel mio caso d'uso voglio restare sul semplice. Mi basta un budget mensile da 1000 $ per fare in modo che gli utenti appena creati conoscano la propria spesa e ricevano un avviso proattivo quando la spesa identificata tramite l'Allocation raggiunge l'80% del budget.
Ancora una volta, è tutto piuttosto immediato:
restish dci create-budget < budget_conf.json
e il budget_conf.json si presenta così:
{
"name": "luca+test - Monthly Budget",
"scope": ["<ALLOCATION_ID>"],
"amount": 1000,
"type": "recurring",
"timeInterval": "month",
"startPeriod": $(( $(date -u -v1d -v0H -v0M -v0S +%s) * 1000 )),
"currency": "USD",
"alerts": [{"percentage": 80}],
"collaborators": [\
{\
"email": "<user_email>",\
"role": "owner"\
}\
]
}
Un paio di dettagli che vale la pena segnalare:
- Il valore di
startPeriodva espresso in secondi dall'epoch. Nel file di configurazione ho incluso il comando per ricavarlo. - È possibile impostare più alert con soglie percentuali diverse: in questo caso ci siamo limitati a uno.
L'esecuzione del comando restituisce una risposta positiva.

niente più sorprese!

La WebUI mostra i dati tracciati e le relative soglie
Qui si chiude la mia prima esplorazione della DoiT Cloud Intelligence CLI, ma il limite è solo l'immaginazione. Pensate di combinare questi passaggi in uno script di onboarding!
Magari è uno spunto per un prossimo articolo. Nel frattempo, installate la DoiT Cloud Intelligence CLI e non esitate a contattarci per qualsiasi supporto.