Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Optimiza la gestión de la nube con el CLI de DoiT

By Luca SerpietriJan 16, 20264 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Cómo el CLI de DoiT Cloud Intelligence lleva la gestión de la nube a otro nivel

Acabamos de lanzar el CLI de DoiT Cloud Intelligence y no te imaginas la sonrisa que me sacó este anuncio. Tal vez esté delatando mi edad, pero crecí en una época en la que escribir scripts en bash se sentía como un superpoder, y a quienes dominaban grep se les veneraba como hoy se venera al analista de datos más afilado. Pero me estoy yendo por las ramas.

Sin pensarlo dos veces, aproveché para probar nuestro nuevo CLI y, desde el primer momento, aprendí algo. Usamos restish como base de la implementación: mientras tu API esté basada en OpenAPI (y la de DoiT lo está), se encarga del descubrimiento de esquemas y de la autenticación.

La configuración

Para empezar, seguí nuestra documentación, instalé restish con brew en mi terminal y lo configuré para que trabajara con las APIs de DoiT. El perfil por defecto permite personalizar las llamadas; al principio no lo usé, pero lo muestro acá porque a algunos les puede resultar interesante.

Ya es momento de comprobar que todo funcione bien, así que validé mi inicio de sesión con el comando restish dci validate, que disparó el flujo de OAuth (un saludo a Browserosaurus, un selector de navegador increíble del que ya no puedo prescindir).

Tras iniciar sesión en mi tenant de DoiT Cloud Intelligence, todo se veía bien: listo para llevar la gestión de la nube a otro nivel a punta de scripts.

El objetivo

Para mi primer caso de uso copié descaradamente algo con lo que nuestros clientes batallaron durante años antes de aliarse con DoiT: la responsabilidad sobre los costos.

Quería ofrecer una forma sencilla y fluida para que los clientes pudieran:

  • Invitar a un nuevo usuario en DoiT Cloud Intelligence;
  • Crear una Allocation basada en su nombre de usuario que rastree los costos que genera;
  • Crear un budget que monitoree la Allocation recién creada y envíe notificaciones cuando se alcance cierto umbral.

Así, cualquier usuario nuevo tendrá su propio ciclo de retroalimentación sobre los costos de la nube, con la mínima fricción posible. Manos a la obra.

La implementación

Invitar al usuario

Más simple, imposible. El comando es:

restish dci invite-user email:<user_email>

tienes correo

Crear una Allocation dedicada al usuario

Si eres nuevo por aquí y no conoces las Allocations, te recomiendo mucho que te familiarices con ellas.

El TL;DR es: las Allocations te permiten agrupar lógicamente los costos de la nube según cualquier dimensión de datos disponible. En nuestro caso, quiero agrupar todos los costos de la nube generados por el usuario que acabamos de crear, para que pueda monitorear su gasto fácilmente.

El comando es

restish dci create-allocation < allocation_conf.json

pero hay que pasarle algunos parámetros como configuración. Voy a hacer un poco de trampa y asumir que existe una clave Tag en nuestros datos de facturación llamada member, donde cada valor corresponde a un cloud engineer (en nuestro caso, luca+test).

El archivo conf.json queda así:

{
    "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"\
                ]\
            }\
        ]
    }
}

Al ejecutar el comando se obtiene el id de la Allocation, que nos vendrá bien enseguida.

Crear un Budget dedicado al usuario

La palabra "budget" le pone los pelos de punta a la mayoría de los engineers con los que hablo: la asocian con frenar la innovación a fuerza de restricciones y barreras.

Reconozco que eso pudo haber pasado en el pasado, pero la forma en que se implementan los Budgets en DoiT Cloud Intelligence genera un ciclo de retroalimentación productivo entre los cloud engineers y sus costos, en el que las malas sorpresas prácticamente desaparecen y la conciencia se vuelve el mantra principal.

Si quieres saber más, visita nuestra documentación, donde profundizamos en todas sus funcionalidades.

En mi caso, quiero algo simple. Solo necesito un budget mensual de $1000 para que los usuarios nuevos sepan cuánto están gastando y reciban una alerta proactiva si el gasto identificado en la Allocation llega al 80% del budget.

De nuevo, es bastante directo:

restish dci create-budget < budget_conf.json

y el budget_conf.json queda así:

{
    "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 par de detalles que vale la pena resaltar:

  • El valor de startPeriod debe expresarse en segundos desde la época (epoch). Incluí en el archivo de configuración el comando para obtenerlo.
  • Puedes configurar varias alertas con distintos umbrales porcentuales: en este caso, nos limitamos a una.

Al ejecutar el comando, se obtiene una respuesta exitosa.

¡se acabaron las sorpresas!

La interfaz web muestra los datos monitoreados y los umbrales correspondientes

Con esto concluye mi exploración inicial del CLI de DoiT Cloud Intelligence, pero el cielo es el límite. ¡Imagina combinar estos pasos en un script de onboarding!

Quizá esa sea una gran idea para otro blog. Mientras tanto, instala el CLI de DoiT Cloud Intelligence y no dudes en escribirnos si necesitas ayuda.