Como a CLI do DoiT Cloud Intelligence eleva a gestão de nuvem a outro patamar
Acabamos de lançar a CLI do DoiT Cloud Intelligence e você não imagina o sorriso que esse anúncio abriu no meu rosto. Talvez eu esteja entregando minha idade aqui, mas cresci num mundo em que escrever script em bash parecia um superpoder, e quem dominava o grep na época era reverenciado como hoje reverenciamos os melhores analistas de dados. Mas estou divagando.
De cara, agarrei a oportunidade de colocar nossa CLI recém-lançada à prova e, logo no começo, já aprendi algo. Usamos o restish como base da implementação: desde que sua API seja baseada em OpenAPI (e a da DoiT é), ele cuida da descoberta de schema e da autenticação.
A configuração
Para começar, segui nossa documentação, instalei o restish via brew no meu terminal e configurei tudo para funcionar com as APIs da DoiT. O perfil padrão permite customizar as chamadas — recurso que não usei no início, mas que mostro aqui porque alguns de vocês podem achar interessante.

Hora de conferir se está tudo funcionando: validei meu login com o comando restish dci validate, que disparou o fluxo de OAuth (um shout-out ao Browserosaurus, um seletor de navegadores incrível do qual não consigo mais abrir mão).

Depois de logar no meu tenant do DoiT Cloud Intelligence, estava tudo certo: pronto para automatizar via script uma gestão de nuvem de outro nível.

O objetivo
Para o meu primeiro caso de uso, copiei descaradamente uma dor que nossos clientes carregaram por anos antes de fechar parceria com a DoiT: responsabilização de custos.
Eu queria oferecer um caminho simples e sem fricção para que os clientes pudessem:
- Convidar um novo usuário no DoiT Cloud Intelligence;
- Criar uma Allocation com base no nome do usuário, que rastrearia os custos gerados por ele;
- Criar um budget acompanhando essa Allocation recém-criada, com notificações ao atingir um limite específico.
Assim, todo novo usuário ganha um loop de feedback próprio sobre os custos de nuvem, com o mínimo de atrito. Bora lá.
A implementação
Convidando o usuário
Não tem como ser mais simples. O comando é:
restish dci invite-user email:<user_email>

você tem e-mail
Criando uma Allocation dedicada ao usuário
Se você é novo por aqui e ainda não conhece as Allocations, recomendo muito que se familiarize com elas.
Resumindo: as Allocations permitem agrupar logicamente custos de nuvem com base em qualquer dimensão de dado disponível. No nosso caso, quero agrupar todos os custos gerados pelo usuário recém-criado, para que ele consiga acompanhar os próprios gastos com facilidade.
O comando é:
restish dci create-allocation < allocation_conf.json
mas precisamos passar alguns parâmetros como configuração. Vou trapacear um pouco e supor que existe uma chave de Tag disponível nos nossos dados de billing chamada member, em que cada valor corresponde a um cloud engineer (no nosso exemplo, luca+test).
O arquivo conf.json fica assim:
{
"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"\
]\
}\
]
}
}
Ao executar o comando, ele retorna o id da Allocation — que vai ser útil daqui a pouco.

Criando um Budget dedicado ao usuário
A palavra "budget" causa arrepios na maioria dos engenheiros com quem converso: virou sinônimo de inovação travada por restrições e barreiras.
Reconheço que isso pode ter acontecido no passado, mas a forma como os Budgets são implementados no DoiT Cloud Intelligence cria um loop de feedback produtivo entre os cloud engineers e seus custos — onde surpresas ruins praticamente desaparecem e a consciência é o mantra central.
Se quiser se aprofundar, passe pela nossa Documentação, em que detalhamos todas as funcionalidades.
No meu caso de uso, quero algo simples. Basta um budget mensal de US$ 1.000 para garantir que os usuários recém-criados saibam quanto estão gastando e sejam alertados proativamente caso o gasto identificado pela Allocation chegue a 80% do budget.
Mais uma vez, é bem direto:
restish dci create-budget < budget_conf.json
e o budget_conf.json fica assim:
{
"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"\
}\
]
}
Vale destacar duas coisas:
- O valor de
startPeriodprecisa ser expresso em segundos desde a epoch. Incluí no arquivo de configuração o comando para extrair esse valor. - Dá para configurar vários alertas em diferentes limites percentuais; aqui, nos limitamos a um.
Executar o comando devolve uma resposta de sucesso.

chega de surpresas!

A WebUI mostra os dados monitorados e os respectivos limites
Por aqui encerro minha exploração inicial da CLI do DoiT Cloud Intelligence, mas o céu é o limite. Imagine só encadear esses passos num script de onboarding!
Talvez fique para um próximo post. Enquanto isso, instale a CLI do DoiT Cloud Intelligence e não hesite em falar com a gente se precisar de qualquer suporte.