Infracost: la soluci贸n de la administraci贸n de costos de la nube para Terraform馃挵馃搲

Infracost: la soluci贸n de la administraci贸n de costos de la nube para Terraform馃挵馃搲

Rossana Suarez's photo
Rossana Suarez
Apr 13, 2022

4 min read

Subscribe to my newsletter and never miss my upcoming articles

驴Que opinas de configurar en tu IAC, los costos de los mismos #BillingTime?

Te presento infracost.io

El costo de la infraestructura es un tema cr铆tico, especialmente cuando se trata del costo de la nube. Simplemente porque la mayor铆a de los gastos no son fijos, y es f谩cil complicar todo eligiendo las herramientas incorrectas. Sin embargo, siempre hay un ingeniero con superpower detr谩s de cada problema. El equipo de @infracost ha desarrollado una herramienta excepcional que escanea los cambios en el c贸digo de Terraform y crea una estimaci贸n de costos simple y comprensible antes de lanzar cualquier recurso.

驴C贸mo funciona Infracost y c贸mo podemos integrarlo en CI/CD?

Me gustar铆a compartir mi experiencia en la integraci贸n de la API de Infracost con Terraform. Se requiere experiencia t茅cnica junto con alg煤n conocimiento pr谩ctico de las acciones de GitHub, Terraform e Infracost API.

API de Infracost:

La API es una herramienta incre铆ble para calcular el impacto de los costos en los proyectos de terraform. permite a DevOps, SRE y desarrolladores ver un desglose de costos y comprender los costos antes de realizar cambios, ya sea en la terminal o en los cambios mediante PR (pull request). Tambi茅n se puede usar para agregar autom谩ticamente un comentario que muestre las diferencias de estimaci贸n de costos.

La previa

Repositorio Github

  • Instalaci贸n:
brew install infracost 
infracost --version
$ infracost --version
Infracost v0.9.21
  • Busquemos la clave API:

Para Registrarse

infracost register

Utiliza la CLI, La clave se puede recuperar con:

infracost configure get api_key

Manos a la Obra desde la terminal

Ejecute Infracost usando nuestro proyecto Terraform de ejemplo para ver c贸mo funciona.

github

git clone https://github.com/roxsross/terraform-infracost.git

cd terraform-infracost/example-aws

#Dado que este Terraform no se ha aplicado, la l铆nea de base es de $0, por lo que la diferencia es de $680

infracost diff --path .

# Actualiza el tipo de instance type to m5.8xlarge.
vi main.tf

# Vuelve aplicar y veras los nuevos cambios? Costing over $1100/month! 

infracost diff --path .
rossanasuarez@ubuntu:~/295devops/terraform-infracost/example-aws$ infracost diff --path .
Detected Terraform directory at .
  鉁 Checking for cached plan... found
  鉁 Extracting only cost-related params from terraform 
  鉁 Retrieving cloud prices to calculate costs 

Project: infracost/example-terraform/example-aws

+ aws_instance.web_app
  +$680

    + Instance usage (Linux/UNIX, on-demand, m5.4xlarge)
      +$561

    + root_block_device

        + Storage (general purpose SSD, gp2)
          +$5.00

    + ebs_block_device[0]

        + Storage (provisioned IOPS SSD, io1)
          +$62.50

        + Provisioned IOPS
          +$52.00

+ aws_lambda_function.hello_world
  Monthly cost depends on usage

    + Requests
      Monthly cost depends on usage
        +$0.20 per 1M requests

    + Duration
      Monthly cost depends on usage
        +$0.0000166667 per GB-seconds

Monthly cost change for infracost/example-terraform/example-aws
Amount:  +$680 ($0.00 鈫 $680)

鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹鈹
Key: ~ changed, + added, - removed

2 cloud resources were detected:
鈭 2 were estimated, all of which include usage-based costs, see https://infracost.io/usage-file

- Configurar CI/CD:

Hay m煤ltiples CI/CD para integrar la API de Infracost.

Pero para esta entrada del blog nos centraremos solo en las acciones de GitHub. para obtener m谩s informaci贸n, consulte la documentaci贸n de infracost.io .

  • Gestion de secretos de GitHub:

Dado que la clave se usar谩 en las acciones de GitHub, debemos almacenarla en los secretos de acciones. Para hacerlo, vaya a Configuraci贸n-> secretos-> Acciones. Luego haga clic en Nuevo secreto de repositorio.

image.png

Publique su clave, recup茅rela usando

infracost configure get api_key

y luego haga clic en Agregar secreto.

image.png

Integre Infracost con Github Action:

En la documentaci贸n, hay una plantilla para integrar la infraestructura con la acci贸n de GitHub.

on: [pull_request]
jobs:
  infracost:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}    
    name: Run Infracost
    steps:
      - name: Check out repository
        uses: actions/checkout@v2

      - name: Install terraform
        uses: hashicorp/setup-terraform@v1
        with:
          terraform_wrapper: false 

      - name: Setup Infracost
        uses: infracost/actions/setup@v1

        with:
          api-key: ${{ secrets.INFRACOST_API_KEY }}

      - name: Generate Infracost JSON
        run: infracost breakdown --path=aws-example --format=json --out-file=/tmp/infracost.json

      - name: Post Infracost comment
        uses: infracost/actions/comment@v1
        with:
          path: /tmp/infracost.json
          behavior: update

image.png

Luego aplican con PR o la configuraci贸n que le asignen en "on"

y ver谩n los resultados

image.png

Para resumir , en esta publicaci贸n de blog echamos un vistazo a la funcionalidad de Infracost y las acciones de GitHub

Espero que hayas disfrutado leyendo este art铆culo, si es as铆, aplaude, comenta y comparte.

infracost.gif

Share this