Import Infrastructure as Code (Azure → Terraform avec AVM)
Ce skill fait partie du repo communautaire github/awesome-copilot, une collection de skills, agents et instructions pour enrichir l'expérience GitHub Copilot. Il s'agit d'un skill pleinement défini et opérationnel, conçu pour guider GitHub Copilot dans la conversion d'une infrastructure Azure existante en code Terraform maintenable, en s'appuyant sur les Azure Verified Modules (AVM).
Ce que fait ce skill
Lorsqu'il est invoqué, ce skill fournit à Copilot un workflow structuré en plusieurs étapes : collecte du scope Azure (subscription, resource group ou resource IDs), authentification via Azure CLI, découverte des ressources, résolution des dépendances, sélection des modules AVM appropriés, génération des fichiers Terraform (main.tf, providers.tf, variables.tf, outputs.tf) et validation via terraform plan. Il impose également des règles strictes pour éviter la dérive de configuration, comme la comparaison des propriétés live avec les valeurs par défaut des modules.
Cas d'usage typiques
Ce skill est particulièrement utile pour le reverse-engineering d'environnements Azure en production : recréer l'infrastructure d'un abonnement ou d'un resource group sous forme d'IaC, mapper les dépendances entre ressources, ou encore standardiser du code Terraform existant vers des modules AVM. Il gère aussi les cas particuliers comme la distinction azurerm vs azapi, les ressources enfants gérées par le module parent (NICs, extensions VM), et la dérivation des adresses d'import correctes depuis le code source des modules téléchargés.
Comment l'utiliser
Pour utiliser ce skill dans votre environnement GitHub Copilot, copiez le dossier skills/import-infrastructure-as-code/ dans votre workspace ou référencez-le via le marketplace awesome-copilot. Une fois activé, demandez à Copilot d'importer vos ressources Azure en fournissant au moins l'un des trois scopes supportés : un subscription-id, un resource-group-name, ou un ou plusieurs resource-id ARM. Les prérequis sont Azure CLI authentifié, Terraform CLI installé, et un accès réseau au Terraform Registry.