Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Simplifique a gestão de nuvem com a CLI da DoiT

By Luca SerpietriJan 16, 20264 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

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 startPeriod precisa 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.

Simplifique a gestão de nuvem com a CLI da DoiT