TERRAFORMER: du reverse engineering IaC de vos environnements Cloud
Vous avez déjà tous entendus parler de l’IaC (Infrastructure as a Code) pour builder vos environnements Cloud. Mais aujourd’hui je vais vous parler de comment générer de l’IaC de vos environnements Cloud automatiquement. TERRAFORMER génère des fichiers tf/json + tfstate à partir de l’infrastructure existante pour tous les objets supportés par la ressource. Petite demo avec Azure…
Terraformer utilise les providers Terraform et est conçu pour prendre facilement en charge les ressources nouvellement ajoutées. Pour mettre à niveau les ressources avec de nouveaux champs, il vous suffit de mettre à niveau les providers Terraform concernés.
Voici la syntaxe:
Import current state to Terraform configuration from a provider
Usage:
import [provider] [flags]
import [provider] [command]
Available Commands:
list List supported resources for a provider
Flags:
-b, --bucket string gs://terraform-state
-c, --connect (default true)
-С, --compact (default false)
-x, --excludes strings firewalls,networks
-f, --filter strings compute_firewall=id1:id2:id4
-h, --help help for google
-O, --output string output format hcl or json (default "hcl")
-o, --path-output string (default "generated")
-p, --path-pattern string {output}/{provider}/ (default "{output}/{provider}/{service}/")
--projects strings
-z, --regions strings europe-west1, (default [global])
-r, --resources strings firewall,networks or * for all services
-s, --state string local or bucket (default "local")
-v, --verbose verbose mode
-n, --retry-number number of retries to perform if refresh fails
-m, --retry-sleep-ms time in ms to sleep between retries
Use " import [provider] [command] --help" for more information about a command.
Bien entendu, pour Azure, il faut créer un SPN ayant les bons droits sur les souscriptions Azure.
# Configurer le provider Azure
provider "azurerm" {
# Le SPN
SUBSCRIPTION_ID="xxxxxxxxxx"
CLIENT_ID="xxxxxxxxxxxx"
CLIENT_SECRET="xxxxxxxxxxx"
TENANT_ID="xxxxxxxxxxxxxx"
}
Il vous faut ensuite télécharger GO pour Windows ici afin de compiler TERRAFORMER. Dans le répertoire Terraform, lancez un git clone de TERRAFORMER.
go run build/main.go {google,aws,azure,kubernetes and etc}
TERRAFORMER nécessite des variables, donc pour la ligne de commande, créer un fichier .BAT à lancer avant pour définir les variables nécessaires pour TERRAFORMER.
./terraformer import azure -r resource_group
OU PAR EXEMPLE
./terraformer import azure -R my_resource_group -r virtual_network,resource_group
analysis
azurerm_analysis_services_server
app_service
azurerm_app_service
container
azurerm_container_group
azurerm_container_registry
azurerm_container_registry_webhook
cosmosdb
azurerm_cosmosdb_account
azurerm_cosmosdb_sql_container
azurerm_cosmosdb_sql_database
azurerm_cosmosdb_table
database
azurerm_mariadb_configuration
azurerm_mariadb_database
azurerm_mariadb_firewall_rule
azurerm_mariadb_server
azurerm_mariadb_virtual_network_rule
azurerm_mysql_configuration
azurerm_mysql_database
azurerm_mysql_firewall_rule
azurerm_mysql_server
azurerm_mysql_virtual_network_rule
azurerm_postgresql_configuration
azurerm_postgresql_database
azurerm_postgresql_firewall_rule
azurerm_postgresql_server
azurerm_postgresql_virtual_network_rule
azurerm_sql_database
azurerm_sql_active_directory_administrator
azurerm_sql_elasticpool
azurerm_sql_failover_group
azurerm_sql_firewall_rule
azurerm_sql_server
azurerm_sql_virtual_network_rule
disk
azurerm_managed_disk
dns
azurerm_dns_a_record
azurerm_dns_aaaa_record
azurerm_dns_caa_record
azurerm_dns_cname_record
azurerm_dns_mx_record
azurerm_dns_ns_record
azurerm_dns_ptr_record
azurerm_dns_srv_record
azurerm_dns_txt_record
azurerm_dns_zone
load_balancer
azurerm_lb
azurerm_lb_backend_address_pool
azurerm_lb_nat_rule
azurerm_lb_probe
network_interface
azurerm_network_interface
network_security_group
azurerm_network_security_group
private_dns
azurerm_private_dns_a_record
azurerm_private_dns_aaaa_record
azurerm_private_dns_cname_record
azurerm_private_dns_mx_record
azurerm_private_dns_ptr_record
azurerm_private_dns_srv_record
azurerm_private_dns_txt_record
azurerm_private_dns_zone
azurerm_private_dns_zone_virtual_network_link
public_ip
azurerm_public_ip
azurerm_public_ip_prefix
redis
`azurerm_redis_cache
resource_group
azurerm_resource_group
scaleset
azurerm_virtual_machine_scale_set
security_center
azurerm_security_center_contact
azurerm_security_center_subscription_pricing
storage_account
azurerm_storage_account
azurerm_storage_blob
azurerm_storage_container
virtual_machine
azurerm_virtual_machine
virtual_network
azurerm_virtual_network
Je travaille actuellement en tant qu’Enterprise Architect pour le groupe CAPGEMINI. Acteur et expert communautaire reconnu depuis de nombreuses années, j’anime ce site autour des technologies Microsoft, des thématiques du Cloud, des infrastructures, … Je suis également à l’origine de nombreuses publications dans la presse IT.