# Azure Cost CLI

La gestion des coûts Azure et son suivi au fil du temps est primordiale à mettre en oeuvre. Je vais vous présenter aujourd'hui un nouvel outil qui peut vous aider dans cette démarche : [Azure Cost CLI](https://github.com/mivano/azure-cost-cli).

Cet outil, proposer par [Michiel van Oudheusden](https://github.com/mivano), va vous permettre d'extraire facilement vos coûts Azure actuel avec un regroupement qui va vous simplifier la vie pour créer par exemple un dashbord ou identifier les resources les plus coûteuses de votre infrastructure Azure. L'outil se présente sous la forme d'une CLI qui pourra, par exempele, être intégrée à vos pipelines DevOps.

# Installation

Pour installer l'outil, rien de plus simple qu'une ligne de commande:

```powershell
dotnet tool install -g "azure-cost-cli"
```

Voici l'output que vous devriez avoir lors de l'installation du package dotnet:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686558902983/bba4f776-0225-4923-88d7-fe32818221cf.png align="left")

# Commandes principales

Une fois l'installation réalisée, vous pouvez visualiser l'ensemble des commandes disponibles via cette commande :

```bash
azure-cost -h
```

Après l'exécution de la commande précédente, vous devriez avoir ce retour:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1686561525159/4469c6c8-f2d4-4532-baca-d52e48d46fe6.png align="center")

Comme vous pouvez le voir pour l'instant, il existe 4 commandes principales !

* **accumulatedCost** : Afficher les détails des coûts cumulés
    
* **dailyCosts** : Afficher le coût quotidien selon une dimension donnée
    
* **costByResource** : Afficher le détail des coûts par ressource
    
* **budgets** : Obtenir les budgets disponibles
    

Pour utiliser l'une de ces commandes rien de plus simple:

```bash
az login --tenant 702a545b-230e-4e4e-b6a8-2d48ac875eec
azure-cost accumulatedCost --subscription d91cf18a-2e58-4a4f-91b1-d2e822c83b1d
```

La première ligne vous permettra de se connecter à votre tenant et la seconde pour obtenir les coûts cumulés associés à votre souscription.

> Pensez à modifier les GUIDs en fonction de votre environnement.

Voici un exemple d'output directement dans la console:

![](https://github.com/mivano/azure-cost-cli/raw/main/screenshot.png align="left")

> Vous pouvez modifier le format de sortie en utilisant l'option "**\--output**" et choisir l'un de ces formats: **Console, Json, JsonC, Text, Markdown** ou **Csv**

# GitHub Actions

Vous pouvez bien sûr utiliser cet outil dans votre chaine CI/CD, voici un exemple pour le faire avec GitHub Actions:

```yaml
name: Azure Cost CLI Workflow

on:
  workflow_dispatch:
    inputs:
      az-subscription-id:
        description: 'Azure Subscription ID'
        required: true
jobs:
  run-azure-cost-cli:
    runs-on: ubuntu-latest
    steps:
      - name: Azure Login
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Install Azure Cost CLI
        run: dotnet tool install -g azure-cost-cli

      - name: Run Azure Cost CLI
        run: azure-cost accumulatedCost -o markdown --subscription ${{ github.event.inputs.az-subscription-id }} >> $GITHUB_STEP_SUMMARY
```

# Mise à jour

Comme pour l'installation du package, une ligne suffira pour récupérer la dernière version de l'outil:

```powershell
dotnet tool update -g "azure-cost-cli"
```

> Avec un paramètre **\--version**, vous pouvez spécifier une version spécifique à installer. Utilisez le paramètre **--no-cache** pour forcer un nouveau téléchargement du package s'il ne trouve pas la dernière version.

# Liens

* Le repo GitHub d'azure-cost-cli : [https://github.com/mivano/azure-cost-cli](https://github.com/mivano/azure-cost-cli)
    
* La vidéo de [Stanislas Quastana](https://www.linkedin.com/in/stanislasquastana/) qui vous présente l'outil: [https://www.youtube.com/watch?v=K5l46j87Yhc](https://www.youtube.com/watch?v=K5l46j87Yhc)
