Cet utilitaire « Azure to Terraform » (az2tf) lit un abonnement Azure et génère tous les fichiers de configuration Terraform requis (.tf) à partir de chacun des groupes de ressources Azure composites. Il importe également l'état Terraform à l'aide d'un
Commande "importation Terraform..."
Et finalement il exécute un
"plan de terraformation." commande
Espérons qu'il n'y ait aucun ajout ou suppression ultérieur signalé par la commande terraform plan car tous les fichiers de configuration terraform appropriés auront été automatiquement créés.
L'exécution de l'outil dans votre shell local (bash) nécessitait ces étapes :
az login
)$ docker build --rm -f "Dockerfile" -t az2tf:latest
.$ mkdir generated
)$ ./runme.sh
(j'apprécierais des commentaires sur la façon de mieux utiliser Docker)
Nous pouvons utiliser docker-compose pour simplifier l'exécution de l'image docker. Exécutez simplement docker-compose run shell bash
.
Pour générer les fichiers Terraform pour l'intégralité d'un abonnement Azure :
./az2tf.sh -s <Subscription ID>
Pour inclure les stratégies d’abonnement Azure et les contrôles et attributions RBAC :
./az2tf.sh -s <Subscription ID> -p yes
Pour générer les fichiers Terraform pour un groupe de ressources spécifique dans un abonnement :
./az2tf.sh -s <Subscription ID> -g <Resource Group>
Pour inclure les secrets d’un Key Vault dans les fichiers Terraform (les secrets seront en texte brut) :
./az2tf.sh -s <Subscription ID> -g <Resource Group> -x yes
Pour filtrer le type de ressource Terraform : (par exemple : uniquement les ensembles à haute disponibilité)
./az2tf.sh -s <Subscription ID> -g <Resource Group> -r azurerm_availability_set
Soyez patient - de nombreux résultats sont donnés sous la forme az2tf :
Les types de ressources Terraform suivants sont actuellement pris en charge par cet outil :
Ressources de base
Ressources d'autorisation
Ressources Active Directory
Ressources App Service (applications Web)
Ressources d'automatisation
Ressources de calcul
Ressources de conteneur
Ressources CosmosDB (DocumentDB)
Ressources Databricks
Ressources du coffre-fort de clés
Ressources d'équilibrage de charge
Ressources de gestion
Ressources de messagerie
Ressources de surveillance
Ressources réseau
Ressources politiques
Ressources du SGD
Services de récupération
Ressources de stockage
(Complet) = prise en charge complète de tous les attributs Terraform (Commun) = prise en charge des attributs Terraform les plus courants (Partiel) = prise en charge de certains des attributs Terraform
Il est assez lent de tout boucler dans les gros abonnements, il existe des moyens d'accélérer cet outil (faire moins d'appels de commande az cli), mais cela rendrait également plus difficile le débogage, je pourrais envisager de le faire après avoir fini de développer le support. pour plus de fournisseurs.
Peut échouer si votre connexion/SPN n'a pas accès au KeyVault
Ces attributs sont toujours signalés dans le plan Terraform défini sur false par défaut - il peut être nécessaire de les remplacer manuellement
en attente de prise en charge de Terraform pour les points de terminaison de service/pare-feu de réseau virtuel. Peut échouer si votre connexion/SPN n'a pas accès au KeyVault utilisé pour le chiffrement. Peut également échouer si des verrous de ressources sont en place.
Si les solutions ont '[' & ']' dans leur nom, elles seront ignorées.
Pas de support pour le peering MS (je n'en ai pas à tester !)
Terraform ne prend pas en charge l'autorisation "Tous"
si aucun paramètre BGP n'est spécifié pour VNet Gateway, terraform plan
signalera un changement bénin, voir le problème dans github
~ update in-place
Terraform will perform the following actions:
~ azurerm_virtual_network_gateway.rg-$RGNAME__vgw-$VGWNAME
bgp_settings.#: "" => <computed>