Découvrez comment importer des ressources cloud existantes dans Terraform à l'aide de la commande import, du bloc import ou de l'outil Terraformer.
Contexte
Terraform automatise la gestion des ressources cloud grâce à l'Infrastructure as Code (IaC). Si vous pouvez créer de nouvelles ressources directement avec du code Terraform, les ressources préexistantes ou celles créées en dehors de Terraform doivent être importées. Ce processus génère le code de ressource et un fichier d'état, permettant ainsi une gestion continue via Terraform.
Terraform crée, modifie et supprime des ressources en se basant sur les définitions du code. Grâce à la fonctionnalité d'importation de ressources, vous pouvez intégrer sous une gestion unifiée les ressources cloud qui ont dérivé hors du système de gestion Terraform.
Scénarios
L'importation de ressources s'avère efficace dans de nombreux scénarios de gestion et de déploiement :
Gérer les ressources existantes : Transférez rapidement vers Terraform les ressources gérées par d'autres moyens, tels que la console, l'API, l'interface de ligne de commande (CLI) ou d'autres outils de gestion.
Résoudre la dérive des ressources : Lorsqu'une ressource gérée par Terraform est modifiée en dehors de celui-ci, son état diverge de la configuration. Réimportez la ressource pour synchroniser l'état.
Refactoriser le code : Divisez un modèle définissant toutes vos ressources en fichiers plus petits afin de réduire la complexité de gestion du modèle et de l'état à mesure que le nombre de ressources augmente.
Déployer rapidement des ressources : Répliquez et déployez une architecture de ressources existante dans une autre région ou un autre compte.
Récupérer rapidement des ressources : Sauvegardez régulièrement votre architecture de ressources. En cas de problème de stabilité, vous pouvez utiliser le code de sauvegarde pour restaurer rapidement l'architecture.
Procédure
Trois méthodes permettent d'importer des ressources :
La commande import : Importe rapidement une seule ressource en exécutant la commande native Terraform
terraform import.Le bloc import : Importe rapidement une ou plusieurs ressources en écrivant un bloc d'importation Terraform, puis en exécutant
terraform planetterraform apply.L'outil Terraformer : Filtre et interroge les ressources par lots en exécutant des commandes Terraformer open source, ce qui permet une importation automatique.
Choisissez la méthode la mieux adaptée à votre scénario.
|
Méthode d'importation |
Avantages |
Inconvénients |
Scénarios |
|
La commande import |
|
|
Gérer les ressources existantes Résoudre la dérive des ressources Refactoriser le code |
|
Le bloc import |
|
|
Gérer les ressources existantes Résoudre la dérive des ressources Refactoriser le code Déployer rapidement des ressources |
|
Terraformer |
|
|
Gérer les ressources existantes Résoudre la dérive des ressources Refactoriser le code Déployer rapidement des ressources Récupérer rapidement des ressources |
La commande import de Terraform
La commande terraform import importe des ressources en spécifiant une adresse de ressource et un ID de ressource, et accepte plusieurs paramètres de configuration.
Prérequis
-
Préparez un environnement d'exécution Terraform en utilisant l'une des méthodes suivantes :
Créer des ressources avec Terraform : Cloud Shell sur Alibaba Cloud est livré avec les composants Terraform préinstallés et les informations d'identification configurées ; vous pouvez exécuter les commandes Terraform directement dans Cloud Shell. Cette méthode convient aux scénarios nécessitant un accès rapide, pratique et peu coûteux à Terraform.
Installer et configurer Terraform : Adapté aux environnements réseau restreints ou aux configurations de développement personnalisées.
Accordez des autorisations en lecture seule pour les ressources concernées au compte actif.
Utilisation
Le format de la commande est terraform import [options] <address> <id>.
-
Adresse de ressource : Le format est
<resource_type>.<resource_name>. Elle inclut le type et le nom de la ressource, et sert d'identifiant pour l'infrastructure dans le fichier d'état.Par exemple, l'adresse de ressource pour le VPC dans l'extrait de configuration suivant est
alicloud_vpc.default.
resource "alicloud_vpc" "default" { vpc_name = "tf-example" cidr_block = "10.0.0.0/8" } -
ID de ressource : Un ID de ressource identifie de manière unique une ressource à importer. Le format de l'ID varie selon le type de ressource — consultez la documentation du fournisseur.
Par exemple, l'ID de ressource pour
alicloud_security_groupest l'ID du groupe de sécurité. L'ID de ressource pouralicloud_security_group_rulesuit un format spécifique.
The following attributes are exported: • id - The resource ID in terraform of Security Group Rule. NOTE: if cidr_ip is set, the id formats as <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<cidr_ip>:<policy>:<priority> . NOTE: if ipv6_cidr_ip is set, the id formats as <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<ipv6_cidr_ip>:<policy>:<priority> . NOTE: if source_security_group_id is set, the id formats as <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<source_security_group_id>:<policy>:<priority> . NOTE: if prefix_list_id is set, the id formats as <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<prefix_list_id>:<policy>:<priority> . Options de configuration : La commande import de Terraform accepte des options supplémentaires documentées dans les instructions d'utilisation officielles.
Exemple
L'exemple suivant importe un bucket Object Storage Service (OSS) :
-
Créez un répertoire de travail. Dans ce répertoire, créez un fichier de configuration nommé main.tf et définissez l'adresse de la ressource à importer.
resource "alicloud_oss_bucket" "default"{ } Déterminez l'ID de la ressource. L'ID d'une ressource alicloud_oss_bucket correspond au nom du bucket.
-
Initialisez l'environnement d'exécution.
terraform init -
Exécutez la commande d'importation.
# Replace this with your bucket name terraform import alicloud_oss_bucket.default oss-bucket-importLa sortie suivante indique une importation réussie :
alicloud_oss_bucket.default: Importing from ID "oss-bucket-import"... alicloud_oss_bucket.default: Import prepared! Prepared alicloud_oss_bucket for import alicloud_oss_bucket.default: Refreshing state... [id=oss-bucket-import] Import successful! The resources that were imported are shown above. These resources are now in your Terraform state and will henceforth be managed by Terraform. -
Après l'importation, les propriétés de la ressource ne sont pas ajoutées automatiquement à votre modèle ; vous devez toujours les renseigner manuellement. Exécutez
terraform showpour afficher toutes les propriétés de la ressource importée :# alicloud_oss_bucket.default: resource "alicloud_oss_bucket" "default" { acl = "private" bucket = "oss-bucket-import" creation_date = "2024-11-22" extranet_endpoint = "oss-cn-beijing.aliyuncs.com" id = "oss-bucket-import" intranet_endpoint = "oss-cn-beijing-internal.aliyuncs.com" location = "oss-cn-beijing" owner = "1511928*****" redundancy_type = "ZRS" resource_group_id = "rg-acf***" storage_class = "Standard" tags = {} access_monitor { status = "Disabled" } }Ajoutez ces informations à votre modèle, puis supprimez les propriétés en lecture seule comme décrit dans alicloud_oss_bucket. Vous pouvez ensuite utiliser Terraform pour gérer vos ressources.
Le bloc import de Terraform
Terraform v1.5.0 et versions ultérieures prennent en charge les importations de ressources à l'aide d'un bloc import. Écrivez un bloc import dans votre fichier de configuration pour spécifier l'ID et l'adresse de la ressource, puis exécutez les commandes terraform plan et terraform apply pour prévisualiser et exécuter l'importation.
Pour plus d'informations, consultez la documentation officielle.
Prérequis
-
Préparez un environnement d'exécution Terraform en utilisant l'une des méthodes suivantes :
RemarqueCette commande nécessite Terraform v1.5.0 ou une version ultérieure. Lors de la configuration de l'environnement, basculez vers une version disponible.
Créer des ressources avec Terraform : Cloud Shell sur Alibaba Cloud est livré avec les composants Terraform préinstallés et les informations d'identification configurées ; vous pouvez exécuter les commandes Terraform directement dans Cloud Shell. Cette méthode convient aux scénarios nécessitant un accès rapide, pratique et peu coûteux à Terraform.
Installer et configurer Terraform : Adapté aux environnements réseau restreints ou aux configurations de développement personnalisées.
Accordez des autorisations en lecture seule pour les ressources concernées au compte actif.
Utilisation
La syntaxe est la suivante :
import {
to = alicloud_oss_bucket.example
id = "oss-bucket-import"
}
# Optional
# resource "alicloud_oss_bucket" "example" {
# # (other resource arguments...)
# }
Le bloc import offre deux avantages par rapport à la commande import :
Génère automatiquement le fichier de modèle. Vous pouvez importer une ressource vers une adresse de ressource déjà définie dans votre modèle, ou utiliser le paramètre
-generate-config-outpour la générer automatiquement, ce qui élimine le coût de remplissage manuel du modèle.Importations par lot. Utilisez
for_eachdans un blocimportpour importer plusieurs ressources. Les ressources ayant des attributs similaires peuvent partager une adresse de ressource, différenciée par un index.
Notez que ces deux fonctionnalités ne peuvent pas être combinées. L'interface CLI de Terraform ne prend actuellement pas en charge la génération automatique de configurations pour les ressources qui utilisent for_each.
oss terraform plan -out=tf.tfplan -generate-config-out=generate.tf
Error: Cannot generate configuration
on main.tf line 10, in import:
10: to = alicloud_oss_bucket.this[each.key]
The given import block is not compatible with config generation. The -generate-config-out option cannot be
used with import blocks which use for_each, or resources which use for_each or count.
Exemple
L'exemple suivant importe un bucket OSS à l'aide d'un bloc import :
-
Créez un répertoire de travail avec un fichier main.tf. Écrivez un bloc import pour spécifier l'ID et l'adresse de la ressource.
import { to = alicloud_oss_bucket.default id = "oss-bucket-import" } -
Initialisez l'environnement d'exécution.
terraform init -
Exécutez
terraform planpour prévisualiser l'importation. Utilisez-generate-config-outpour générer automatiquement le modèle.terraform plan -generate-config-out=generated.tfLes informations suivantes s'affichent :
alicloud_oss_bucket.default: Preparing import... [id=oss-bucket-import] alicloud_oss_bucket.default: Refreshing state... [id=oss-bucket-import] Terraform will perform the following actions: # alicloud_oss_bucket.default will be imported # (config will be generated) resource "alicloud_oss_bucket" "default" { acl = "private" bucket = "oss-bucket-import" creation_date = "2024-11-22" extranet_endpoint = "oss-cn-beijing.aliyuncs.com" id = "oss-bucket-import" intranet_endpoint = "oss-cn-beijing-internal.aliyuncs.com" location = "oss-cn-beijing" owner = "15119****" redundancy_type = "ZRS" resource_group_id = "rg-acfmzaq*****" storage_class = "Standard" tags = {} access_monitor { status = "Disabled" } } Plan: 1 to import, 0 to add, 0 to change, 0 to destroy. ╷ │ Warning: Config generation is experimental │ │ Generating configuration during import is currently experimental, and the generated configuration │ format may change in future versions. ╵ ───────────────────────────────────────────────────────────────────────────────────────────────────── Terraform has generated configuration and written it to generated.tf. Please review the configuration and edit it as necessary before adding it to version control. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now. -
Après avoir confirmé le plan, exécutez
terraform applypour effectuer l'importation.terraform applySaisissez yes lorsque vous y êtes invité. La sortie suivante indique que l'importation a réussi :
...... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes alicloud_oss_bucket.default: Importing... [id=oss-bucket-import] alicloud_oss_bucket.default: Import complete [id=oss-bucket-import] Apply complete! Resources: 1 imported, 0 added, 0 changed, 0 destroyed.
L'outil Terraformer
En plus des fonctionnalités natives de Terraform, vous pouvez utiliser l'outil open source Terraformer pour importer rapidement des ressources de votre compte dans des modèles Terraform par lots. Terraformer open source ne prend en charge qu'un sous-ensemble des ressources de chaque fournisseur cloud, et chaque fournisseur nécessite encore un développement secondaire pour s'aligner sur les ressources prises en charge par son propre Provider.
Vous pouvez utiliser l'outil Terraformer de deux manières :
Terraformer open source : La version originale, prenant en charge l'importation de ressources depuis plusieurs fournisseurs cloud.
Alibaba Cloud Terraformer : Une version améliorée prenant en charge exclusivement les ressources Alibaba Cloud.
|
Fonctionnalité |
Terraformer open source |
Alibaba Cloud Terraformer |
|
Afficher la liste des produits pris en charge pour l'importation |
❌ |
✅ |
|
Afficher la liste des types de ressources pris en charge pour l'importation |
❌ |
✅ |
|
Filtrer par région |
✅ |
✅ |
|
Filtrer en excluant les régions spécifiées |
❌ |
❌ |
|
Filtrer par zone |
❌ |
✅ |
|
Filtrer en excluant les zones spécifiées |
❌ |
❌ |
|
Filtrer par produit |
❌ |
✅ |
|
Filtrer en excluant les produits spécifiés |
❌ |
✅ |
|
Filtrer par type de ressource |
✅ |
✅ |
|
Filtrer en excluant les types de ressources spécifiés |
✅ |
✅ |
|
Filtrer par une liste d'ID de ressources |
✅ |
✅ |
|
Filtrer en excluant une liste spécifiée d'ID de ressources |
❌ |
❌ |
|
Filtrer par nom de ressource |
✅ |
✅ |
|
Filtrer par groupe de ressources |
✅ |
✅ |
|
Filtrer par tag |
✅ |
✅ |
|
Créer automatiquement les dépendances de ressources |
❌ |
✅ |
|
Générer automatiquement des variables |
❌ |
✅ |
|
Générer automatiquement des outputs |
❌ |
❌ |
Terraformer open source
Prérequis
-
Téléchargez et installez Terraformer
Les packages de publication de Terraformer incluent un package pour tous les fournisseurs et un package distinct pour chaque fournisseur. Téléchargez le package qui répond à vos besoins. Les exemples suivants montrent la méthode de téléchargement pour les utilisateurs Linux et macOS ; d'autres méthodes sont décrites dans le guide Installation.
Utilisateurs Linux
export PROVIDER=all curl -LO "https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-${PROVIDER}-linux-amd64" chmod +x terraformer-${PROVIDER}-linux-amd64 sudo mv terraformer-${PROVIDER}-linux-amd64 /usr/local/bin/terraformerUtilisateurs macOS
export PROVIDER=all curl -LO "https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-${PROVIDER}-darwin-amd64" chmod +x terraformer-${PROVIDER}-darwin-amd64 sudo mv terraformer-${PROVIDER}-darwin-amd64 /usr/local/bin/terraformer -
Dépendances
Accordez au compte actuel des autorisations en lecture seule pour les ressources concernées.
-
Installez Terraform
RemarqueVous pouvez ignorer cette étape si vous exécutez la commande dans Cloud Shell.
Le guide de démarrage Installer et configurer Terraform décrit les étapes détaillées.
-
Téléchargez le fournisseur pertinent. Vous pouvez configurer le fournisseur de l'une des deux manières suivantes :
Initialisez le fournisseur dans le répertoire à partir duquel vous exécutez la commande Terraformer.
Téléchargez le fournisseur vers le chemin ~/.terraform.d/plugins/.
Configurez les informations d'identification d'accès. Terraformer prend actuellement en charge l'authentification uniquement en lisant un profil local. Par défaut, la première information d'identification du profil est utilisée pour l'importation. Pour plus d'informations sur la configuration des informations d'identification d'accès Alibaba Cloud, consultez Configurer et gérer les informations d'identification.
Utilisation
L'exemple suivant utilise terraformer-all-darwin-amd64 v0.8.24.
Terraformer prend en charge quatre commandes : help, import, plan, and version.
-
help : Affiche les détails relatifs à une commande.
➜ ~ terraformer-all-darwin-arm64 help Usage: [command] Available Commands: help Help about any command import Import current state to Terraform configuration plan Plan to import current state to Terraform configuration version Print the version number of Terraformer Flags: -h, --help help for this command Use " [command] --help" for more information about a command. -
version : Affiche le numéro de version actuel.
~ terraformer-all-darwin-arm64 version Terraformer v0.8.24 -
import : Importe les ressources pour un fournisseur spécifié.
➜ ~ terraformer-all-darwin-arm64 import Import current state to Terraform configuration Usage: import [command] Available Commands: alicloud Import current State to terraform configuration from alicloud auth0 Import current state to Terraform configuration from Auth0 aws Import current state to Terraform configuration from AWS azure Import current state to Terraform configuration from Azure azuread Import current state to Terraform configuration from Azure Active Directory azuredevops Import current state to Terraform configuration from Azure DevOps cloudflare Import current state to Terraform configuration from Cloudflare commercetools Import current state to Terraform configuration from Commercetools datadog Import current state to Terraform configuration from Datadog digitalocean Import current state to Terraform configuration from DigitalOcean fastly Import current state to Terraform configuration from Fastly github Import current state to Terraform configuration from GitHub gitlab Import current state to Terraform configuration from GitLab gmailfilter Import current state to Terraform configuration from Gmail google Import current state to Terraform configuration from Google Cloud grafana Import current state to Terraform configuration from Grafana heroku Import current state to Terraform configuration from Heroku honeycombio Import current state to Terraform configuration from Honeycomb.io ibm Import current state to Terraform configuration from ibm ionoscloud Import current state to Terraform configuration from IONOS Cloud keycloak Import current state to Terraform configuration from Keycloak kubernetes Import current state to Terraform configuration from Kubernetes launchdarkly Import current state to Terraform configuration from LaunchDarkly linode Import current state to Terraform configuration from Linode logzio Import current state to Terraform configuration from Logz.io mackerel Import current state to Terraform configuration from Mackerel metal Import current state to Terraform configuration from Equinix Metal mikrotik Import current state to Terraform configuration from RouterOS myrasec Import current state to Terraform configuration from Myra Security newrelic Import current state to Terraform configuration from New Relic ns1 Import current state to Terraform configuration from NS1 octopusdeploy Import current state to Terraform configuration from Octopus Deploy okta Import current State to terraform configuration from okta opal Import current state to Terraform configuration from opal.dev openstack Import current state to Terraform configuration from OpenStack opsgenie Import current state to Terraform configuration from Opsgenie pagerduty Import current state to Terraform configuration from PagerDuty panos Import current state to Terraform configuration from a PAN-OS plan Import planned state to Terraform configuration rabbitmq Import current state to Terraform configuration from RabbitMQ tencentcloud Import current state to Terraform configuration from Tencent Cloud vault Import current state to Terraform configuration from Vault vultr Import current state to Terraform configuration from Vultr xenorchestra Import current state to Terraform configuration from Xen Orchestra yandex Import current state to Terraform configuration from Yandex Cloud Flags: -h, --help help for import Additional help topics: import no-sort Don't sort resources Use " import [command] --help" for more information about a command. plan : Prévisualise les ressources à importer pour un fournisseur spécifié.
Exemple
L'exemple suivant importe tous les VPC Alibaba Cloud de la région Chine (Hangzhou).
-
Créez un répertoire pour stocker les modèles et les fichiers d'état importés.
mkdir example && cd example -
Exécutez la commande suivante :
terraformer-all-darwin-arm64 import alicloud --resources=vpc --regions=cn-hangzhou --path-pattern={output} --path-output=./--resources: Spécifie la collection de ressources à importer.--regions: Spécifie la région où se trouvent les ressources.--path-pattern: Spécifie le modèle pour la structure de répertoires générée.--path-output: Spécifie le chemin de sortie pour les fichiers générés.
-
Les fichiers de modèle générés sont les suivants. Par défaut, les informations de région sont ajoutées au chemin du répertoire. Pour regrouper tous les modèles de ressources dans un seul fichier, utilisez le paramètre
--compact, qui exporte toutes les ressources versresources.tf.└── cn-hangzhou ├── outputs.tf ├── provider.tf ├── terraform.tfstate ├── variables.tf ├── vpc.tf └── vswitch.tf 2 directories, 6 files -
Pour Terraform
>=0.13.0, exécutez la commande suivante afin de mettre à jour le fichier d'état pour la compatibilité des versions.terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
Alibaba Cloud Terraformer - aliterraformer (recommandé)
aliterraformer étend Terraformer open source avec une couverture de ressources plus large, une configuration améliorée des identifiants et des dimensions de filtrage d'importation supplémentaires.
Prérequis
-
Téléchargement et installation
Téléchargez aliterraformer depuis Alibaba Cloud OSS :
macOS
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_darwin_amd64.zip # arm64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_darwin_arm64.zipLinux
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_amd64.zip # arm wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_arm.zip # arm64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_linux_arm64.zipWindows
# amd64 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_windows_amd64.zip # 386 wget https://terraform-share.oss-cn-hangzhou.aliyuncs.com/aliterraformer/aliterraformer_windows_386.zipPar exemple, sur macOS, décompressez le fichier après le téléchargement :
unzip aliterraformer_darwin_amd64.zip chmod +x aliterraformer sudo mv aliterraformer /usr/local/bin/aliterraformer -
Dépendances
Comme pour Terraformer open source, vous avez besoin des binaires terraform et terraform-provider-alicloud, ainsi que d'identifiants d'accès configurés.
Accordez des autorisations en lecture seule pour les ressources concernées au compte Resource Access Management (RAM).
-
Installez Terraform
Le guide de démarrage Installation et configuration de Terraform décrit les étapes détaillées. Vous pouvez ignorer cette étape si vous exécutez la commande dans Cloud Shell.
-
Téléchargez terraform-provider-alicloud
Vous pouvez spécifier la version du fournisseur pour l'importation. La structure du répertoire de cache après l'exécution de init diffère entre les versions antérieures à la v0.13.0 et la v0.13.0 ou ultérieure. Les chemins de lecture suivants s'appliquent à la v0.13.0 et aux versions ultérieures :
# 1. Set using the TF_DATA_TFER_DIR environment variable <$TF_DATA_TFER_DIR>/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 2. Set in the hidden directory of the current working directory .terraform/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 3. Set in the hidden directory of the user's root directory <HOME>/.terraform.d/plugins/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 -
Configurez les identifiants d'accès
En plus d'utiliser les profils, vous pouvez définir les identifiants d'accès dans aliterraformer à l'aide de variables d'environnement et de paramètres de commande :
# 1. Using the ALICLOUD_ACCESS_KEY and ALICLOUD_SECRET_KEY environment variables $ export ALICLOUD_ACCESS_KEY=xxxx $ export ALICLOUD_SECRET_KEY=xxxxx # 2. By passing the --access-key and --secret-key command parameters $ aliterraformer import alicloud --access-key=xxxx --secret-key=xxx ... # 3. By setting and passing the AK through the profile mechanism $ aliterraformer import alicloud --profile=default ...
Utilisation
aliterraformer prend actuellement en charge cinq commandes : help, version, products, resources, import. Les commandes products, resources sont des ajouts à Terraformer open source.
-
help : Consultez les détails relatifs aux commandes prises en charge.
aliterraformer help→ ~ aliterraformer help Usage: [command] Available Commands: help Help about any command import Import current state to Terraform configuration products List all supported products resources List resources for a given product version Print the version number of Terraformer Flags: -h, --help help for this command Use " [command] --help" for more information about a command. -
version : Consultez la version actuelle de Terraformer.
aliterraformer version -
products : Répertorie les produits pris en charge pour l'importation dans la version actuelle.
aliterraformer products➜ ~ aliterraformer products Supported products: ACK Container_Service_for_Kubernetes(ACK) ADB AnalyticDB_for_MySQL(ADB) ALB Application_Load_Balancer(ALB) ActionTrail Actiontrail AliKafka AliKafka Alidns Alidns Aligreen Aligreen Amqp RabbitMQ(AMQP) ApiGateway Api_Gateway AutoScaling Auto_Scaling BPStudio Cloud_Architect_Design_Tools(BPStudio) Bastionhost Bastion_Host CBWP EIP_Bandwidth_Plan(CBWP) CDN CDN CEN Cloud_Enterprise_Network(CEN) ClickHouse Click_House CloudMonitorService Cloud_Monitor_Service CloudStorageGateway Cloud_Storage_Gateway Cloudauth Cloudauth Config Cloud_Config(Config) DBFS Database_File_System(DBFS) DBS Database_Backup(DBS) DCDN DCDN DFS Apsara_File_Storage_for_HDFS(DFS) DMSEnterprise DMS_Enterprise DTS Data_Transmission_Service(DTS) -
resources : Répertorie les types de ressources importables pour un produit. Utilisez
-ppour spécifier le produit.aliterraformer resources -p <productName>~ aliterraformer resources -p VPC Supported resources in product [VPC]: route_table vpc vpc_dhcp_options_set vpc_flow_log vpc_ha_vip vpc_ipv4_cidr_block vpc_ipv4_gateway vpc_ipv6_egress_rule vpc_ipv6_gateway vpc_ipv6_internet_bandwidth vpc_network_acl_attachment vpc_prefix_list vpc_public_ip_address_pool vpc_public_ip_address_pool_cidr_block vpc_traffic_mirror_filter vpc_traffic_mirror_session vswitch~ aliterraformer resources -p ACK Supported resources in product [ACK]: cs_edge_kubernetes cs_kubernetes cs_kubernetes_addon cs_kubernetes_node_pool cs_kubernetes_permissions cs_managed_kubernetes cs_serverless_kubernetes -
import : Effectue l'importation réelle. Spécifiez alicloud pour les ressources Alibaba Cloud. Exécutez la commande suivante pour afficher les paramètres pris en charge pour l'importation de ressources Alibaba Cloud :
aliterraformer import alicloud -h➜ ~ aliterraformer import alicloud -h Import current State to terraform configuration from alicloud Usage: import alicloud [flags] import alicloud [command] Available Commands: list List supported resources for alicloud provider Flags: --access-key string Alibaba Cloud Access Key -b, --bucket string gs://terraform-state -C, --compact -c, --connect (default true) -x, --excludes strings vpc,subnet,nacl --excludes-products strings ECS,VPC (Specify the products to be excluded.) -f, --filter strings slb=id1:id2:id4 -h, --help help for alicloud --modularize Whether output the terraform configuration to a module -O, --output string output format hcl or json (default "hcl") --output-variables string r1:attr1,attr2;r2:attr1,attr2,attr3 -o, --path-output string (default "generated") -p, --path-pattern string {output}/{provider}/ (default "{output}/{provider}/{service}/") --products strings ECS,VPC (You can input 'ALL' to import all products; Once specified, the flag <resources> will be ignored.) --profile string prod (default "default") --provider-version string Terraform Provider Alibaba Cloud Version --regions strings cn-hangzhou -r, --resources strings vpc,subnet,nacl (This flag will be ignored if the flag <products> is specified.) -n, --retry-number int number of retries to perform when refresh fails (default 5) -m, --retry-sleep-ms int time in ms to sleep between retries (default 300) --secret-key string Alibaba Cloud Secret Key --security-token string Alibaba Cloud Security Token -s, --state string local or bucket (default "local") --statefile string terraform.tfstate (default "terraform.tfstate") --terraform-version string Terraform Version (default "0.12.29") -v, --verbose --zone string availability zone, like cn-hangzhou-h Use " import alicloud [command] --help" for more information about a command.Lorsque vous exécutez import, définissez d'abord la collection de ressources à importer. Ensuite, selon vos besoins, utilisez
filterpour filtrer les ressources etoutput-variablespour extraire les propriétés en tant que paramètres.-
Construire une collection de ressources :
Cette commande propose quatre indicateurs pour spécifier les ressources à importer : <--products>, <--resources>, <--excludes-products> et <--excludes>. Vous pouvez les combiner pour construire facilement une collection de ressources. Voici des exemples d'utilisation :
-
Importer des ressources spécifiques
# Import a VPC, a vSwitch, and an ECS instance aliterraformer import alicloud -r=vpc,vswitch,instance -
Importer des produits spécifiques
# Import all resources under the ACK and ALB products aliterraformer import alicloud --products=ACK,ALB -
Importer des produits et des ressources spécifiques
# Import all resources under the ACK and ECS products, and all VPCs and vSwitches aliterraformer import alicloud --products=ACK,ECS -r=vpc,vswitch -
Importer des produits spécifiques, mais exclure certaines ressources au sein de ces produits
# Import all resources under ACK except alicloud_cs_kubernetes aliterraformer import alicloud --products=ACK --excludes=cs_kubernetes -
Importer toutes les ressources de tous les produits
# Entering ALL for products means all products aliterraformer import alicloud --products=ALL -
Importer toutes les ressources de tous les produits, mais exclure des produits spécifiques
# Import all products except VPNGateway and WAF aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAF -
Importer toutes les ressources de tous les produits, mais exclure des produits et des ressources spécifiques
# Import all products except VPNGateway and WAF, and exclude the alicloud_cs_kubernetes resource aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAF --excludes=cs_kubernetes
-
-
Filtrer les ressources
Format :
--filter=Type1.AttrKey=AttrValue1;AttrValue2,Type2.AttrKey=AttrValue1;AttrValue2. L'omission de Type applique le filtre à toutes les ressources.-
Importer un VPC avec l'ID vpc-123
# To specify multiple values, separate them with semicolons: --filter="vpc.id=vpc-123;vpc-456" aliterraformer import alicloud -r=vpc --filter="vpc.id=vpc-123" -
Importer un VPC et un vSwitch nommés tous deux tf-example
aliterraformer import alicloud -r=vpc,vswitch --filter="vpc.vpc_name=tf-example,vswitch.vswitch_name=tf-example" -
Importer un VPC et une instance ECS appartenant tous deux au groupe de ressources rg-12345
aliterraformer import alicloud -r=vpc,instance --filter="resource_group_id=rg-12345"
-
-
Extraire des propriétés en tant que variables à l'aide de output-variables
Le format de la commande actuelle est
r1:attr1,attr2;r2:attr1,attr2,attr3.-
Extraire vpc_id et vswitch_id d'une instance ECS en tant que variables
aliterraformer import alicloud -r=instance --output-variables="instance:vpc_id,vswitch_id"
-
-
Exemple
Cet exemple importe un VPC, un vSwitch et une instance ECS avec l'ID VPC vpc-12345 en Chine (Hangzhou), en extrayant le zone_id du vSwitch en tant que variable :
-
Créez un répertoire pour stocker les modèles et les fichiers d'état importés.
mkdir example && cd example -
Construisez la commande d'importation.
aliterraformer import alicloud \ --regions=cn-hangzhou \ -r=vpc,vswitch,instance \ --filter="vpc.id=vpc-12345,vswitch.vpc_id=vpc-12345,instance.vpc_id=vpc-12345" \ --output-variables="vswitch:zone_id" \ --path-output=example \ --path-pattern={output} \ --compact--path-output: Spécifie le dossier d'importation.--path-pattern: Structure de répertoires pour les modèles importés. Valeur par défaut :{output}/{provider}/{service}/. Alternatives :{output}/{provider}/et{output}/. L'utilisation de--path-pattern={output}place tous les modèles dans un seul dossier.--compact: Regroupe toutes les ressources dans un seul fichierresources.tfau lieu de fichiers{service}.tfséparés.
-
Après l'importation, les fichiers suivants sont générés dans le répertoire example :
. ├── outputs.tf ├── provider.tf ├── resources.tf ├── terraform.tfstate └── variables.tfSans
--path-pattern={output}, la structure de répertoires est la suivante :. └── alicloud ├── instance │ ├── provider.tf │ ├── terraform.tfstate │ └── variables.tf ├── vpc │ ├── outputs.tf │ ├── provider.tf │ ├── terraform.tfstate │ ├── variables.tf │ └── vpc.tf └── vswitch ├── outputs.tf ├── provider.tf ├── terraform.tfstate ├── variables.tf └── vswitch.tf -
Pour Terraform
>=0.13.0, exécutez la commande suivante afin de mettre à jour le fichier d'état pour la compatibilité des versions.terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
Commentaires et suggestions
Si vous avez des questions ou des suggestions lors de l'utilisation du tutoriel ou en pratique, rejoignez le groupe DingTalk client (ID de groupe DingTalk : 34240022836) pour communiquer en ligne avec nos ingénieurs, ou soumettez un problème sur la page GitHub du fournisseur Terraform d'Alibaba Cloud. Une personne dédiée assurera le suivi de vos questions et suggestions.