Pelajari cara mengimpor resource cloud yang sudah ada ke Terraform menggunakan perintah import, blok import, atau Terraformer.
Latar Belakang
Terraform mengotomatiskan manajemen resource cloud melalui Infrastructure as Code (IaC). Resource baru dapat dibuat langsung dengan kode Terraform, tetapi resource yang sudah ada atau yang dibuat di luar Terraform memerlukan proses impor. Proses ini menghasilkan kode resource dan file state sehingga memungkinkan pengelolaan berkelanjutan melalui Terraform.
Resource import membawa resource cloud yang sudah ada ke dalam pengelolaan Terraform.
Skenario
Resource import berlaku untuk skenario umum berikut:
-
Mengelola resource yang sudah ada: Alihkan resource yang dikelola oleh tool lain, seperti Konsol, API, atau command-line interface (CLI), ke pengelolaan Terraform.
-
Menyelesaikan deviasi resource: Ketika resource yang dikelola Terraform dimodifikasi di luar Terraform, state-nya menyimpang dari konfigurasi. Impor ulang resource tersebut untuk menyinkronkan state.
-
Refaktor kode: Pisahkan file konfigurasi monolitik menjadi file-file yang lebih kecil guna mengurangi kompleksitas pengelolaan seiring pertumbuhan jumlah resource Anda.
-
Men-deploy resource dengan cepat: Replikasi dan deploy arsitektur resource yang sudah ada ke wilayah atau akun yang berbeda.
-
Memulihkan resource dengan cepat: Backup arsitektur resource Anda secara berkala. Jika terjadi masalah stabilitas, Anda dapat menggunakan kode backup untuk memulihkan arsitektur dengan cepat.
Prosedur
Terdapat tiga metode untuk mengimpor resource:
-
Perintah import: Mengimpor satu resource menggunakan perintah native Terraform
terraform import. -
Blok import: Mengimpor satu atau beberapa resource dengan menulis blok import Terraform dan menjalankan
terraform plandanterraform apply. -
Tool Terraformer: Mengimpor resource secara batch dengan menjalankan perintah menggunakan tool open-source Terraformer untuk memfilter dan mengkueri resource tersebut.
Pilih metode yang paling sesuai dengan skenario Anda.
|
Metode impor |
Kelebihan |
Kekurangan |
Skenario |
|
The import command |
|
|
Manage existing resources Resolve resource drift Refactor code |
|
The import block |
|
|
Manage existing resources Resolve resource drift Refactor code Quickly deploy resources |
|
Terraformer |
|
|
Manage existing resources Resolve resource drift Refactor code Quickly deploy resources Quickly recover resources |
Perintah import Terraform
Perintah <a class="ne-link" data-href="https://developer.hashicorp.com/terraform/cli/commands/import" href="https://developer.hashicorp.com/terraform/cli/commands/import" id="653ac62fdfgjr" target="_blank">terraform import</a> mengimpor resource dengan menentukan alamat resource dan ID resource, serta menerima beberapa parameter konfigurasi.
Prasyarat
-
Siapkan lingkungan runtime Terraform menggunakan salah satu metode berikut:
-
Buat resource dengan Terraform: Cloud Shell telah dipra-instal dengan Terraform dan kredensial yang dikonfigurasi. Cocok untuk akses cepat.
-
Instal dan konfigurasi Terraform: Cocok untuk lingkungan jaringan terbatas atau setup pengembangan kustom.
-
-
Berikan izin read-only untuk resource terkait kepada akun aktif.
Penggunaan
Format perintahnya adalah terraform import [options] <address> <id>.
-
Alamat resource: Formatnya adalah
<resource_type>.<resource_name>. Alamat ini mencakup tipe dan nama resource, serta berfungsi sebagai pengenal infrastruktur dalam file state.-
Sebagai contoh, alamat resource untuk VPC pada cuplikan konfigurasi berikut adalah
alicloud_vpc.default.
resource "alicloud_vpc" "default" { vpc_name = "tf-example" cidr_block = "10.0.0.0/8" } -
-
ID resource: ID resource secara unik mengidentifikasi resource untuk impor. Format ID bervariasi tergantung tipe resource — lihat Dokumentasi Provider.
-
Sebagai contoh, ID resource untuk
alicloud_security_groupadalah ID security group. ID resource untukalicloud_security_group_rulemengikuti format tertentu.
Atribut berikut diekspor: • id - ID resource di terraform untuk Security Group Rule. CATATAN: jika cidr_ip disetel, format id adalah <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<cidr_ip>:<policy>:<priority> . CATATAN: jika ipv6_cidr_ip disetel, format id adalah <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<ipv6_cidr_ip>:<policy>:<priority> . CATATAN: jika source_security_group_id disetel, format id adalah <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<source_security_group_id>:<policy>:<priority> . CATATAN: jika prefix_list_id disetel, format id adalah <security_group_id>:<type>:<ip_protocol>:<port_range>:<nic_type>:<prefix_list_id>:<policy>:<priority> . -
-
Opsi konfigurasi: Perintah import Terraform menerima opsi tambahan yang didokumentasikan dalam petunjuk penggunaan resmi.
Contoh
Contoh berikut mengimpor bucket Object Storage Service (OSS):
-
Buat direktori kerja. Di dalam direktori tersebut, buat file konfigurasi bernama main.tf dan definisikan alamat resource yang akan diimpor.
resource "alicloud_oss_bucket" "default"{ } -
ID resource alicloud_oss_bucket adalah nama bucket.
-
Inisialisasi lingkungan runtime.
terraform init -
Jalankan perintah impor.
# Ganti ini dengan nama bucket Anda terraform import alicloud_oss_bucket.default oss-bucket-importOutput berikut menunjukkan impor berhasil:
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. -
Setelah impor, properti resource tidak ditambahkan ke templat Anda secara otomatis. Jalankan
terraform showuntuk melihat semua properti resource yang diimpor:# 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" } }Tambahkan informasi ini ke templat Anda dan hapus properti read-only seperti yang dijelaskan dalam alicloud_oss_bucket, Anda dapat menggunakan Terraform untuk mengelola resource Anda.
Blok import Terraform
Terraform v1.5.0 dan versi setelahnya mendukung impor resource menggunakan blok `import`. Tulis blok `import` dalam file konfigurasi Anda untuk menentukan ID dan alamat resource, lalu jalankan perintah terraform plan dan terraform apply untuk melihat pratinjau dan mengeksekusi impor.
Untuk informasi lebih lanjut, lihat dokumentasi resmi.
Prasyarat
-
Siapkan lingkungan runtime Terraform menggunakan salah satu metode berikut:
CatatanMemerlukan Terraform v1.5.0 atau versi setelahnya.
-
Buat resource dengan Terraform: Cloud Shell telah dipra-instal dengan Terraform dan kredensial yang dikonfigurasi. Cocok untuk akses cepat.
-
Instal dan konfigurasi Terraform: Cocok untuk lingkungan jaringan terbatas atau setup pengembangan kustom.
-
-
Berikan izin read-only untuk resource terkait kepada akun aktif.
Penggunaan
Sintaksnya adalah sebagai berikut:
import {
to = alicloud_oss_bucket.example
id = "oss-bucket-import"
}
# Opsional
# resource "alicloud_oss_bucket" "example" {
# # (argumen resource lainnya...)
# }
Blok import memiliki dua keunggulan dibandingkan perintah import:
-
Menghasilkan konfigurasi secara otomatis. Impor ke alamat resource yang sudah ada, atau gunakan
-generate-config-outuntuk menghasilkan file konfigurasi secara otomatis. -
Impor batch. Gunakan
for_eachdalam blok `import` untuk mengimpor beberapa resource. Resource dengan atribut serupa dapat berbagi alamat resource yang sama, dibedakan berdasarkan indeks.
Kedua fitur ini tidak dapat digabungkan. CLI Terraform tidak mendukung pembuatan konfigurasi otomatis untuk resource yang menggunakan 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.
Contoh
Contoh berikut mengimpor bucket OSS menggunakan blok import:
-
Buat direktori kerja dengan file main.tf. Tulis blok import untuk menentukan ID dan alamat resource.
import { to = alicloud_oss_bucket.default id = "oss-bucket-import" } -
Inisialisasi lingkungan runtime.
terraform init -
Jalankan
terraform planuntuk melihat pratinjau impor. Gunakan-generate-config-outuntuk menghasilkan templat secara otomatis.terraform plan -generate-config-out=generated.tfInformasi berikut ditampilkan:
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. -
Setelah mengonfirmasi rencana, jalankan
terraform applyuntuk mengeksekusi impor.terraform applyMasukkan yes saat diminta. Output berikut menunjukkan bahwa impor berhasil:
...... 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.
Tool Terraformer
Tool open-source Terraformer mengimpor resource secara batch dari akun Anda ke dalam templat Terraform. Tool ini mendukung subset resource per penyedia cloud; resource tambahan memerlukan pengembangan provider kustom.
Terdapat dua versi Terraformer:
-
Terraformer open-source: Versi asli, mendukung impor resource dari berbagai penyedia cloud.
-
Terraformer Alibaba Cloud: Versi yang ditingkatkan, mendukung resource Alibaba Cloud secara eksklusif.
|
Fitur |
Open-source Terraformer |
Alibaba Cloud Terraformer |
|
Lihat daftar produk yang didukung untuk impor |
❌ |
✅ |
|
Lihat daftar tipe resource yang didukung untuk impor |
❌ |
✅ |
|
Filter berdasarkan wilayah |
✅ |
✅ |
|
Filter dengan mengecualikan wilayah tertentu |
❌ |
❌ |
|
Filter berdasarkan zona |
❌ |
✅ |
|
Filter dengan mengecualikan zona tertentu |
❌ |
❌ |
|
Filter berdasarkan produk |
❌ |
✅ |
|
Filter dengan mengecualikan produk tertentu |
❌ |
✅ |
|
Filter berdasarkan tipe resource |
✅ |
✅ |
|
Filter dengan mengecualikan tipe resource tertentu |
✅ |
✅ |
|
Filter berdasarkan daftar ID resource |
✅ |
✅ |
|
Filter dengan mengecualikan daftar ID resource tertentu |
❌ |
❌ |
|
Filter berdasarkan nama resource |
✅ |
✅ |
|
Filter berdasarkan kelompok sumber daya |
✅ |
✅ |
|
Filter berdasarkan tag |
✅ |
✅ |
|
Membuat dependensi resource secara otomatis |
❌ |
✅ |
|
Menghasilkan variabel secara otomatis |
❌ |
✅ |
|
Menghasilkan output secara otomatis |
❌ |
❌ |
Terraformer open-source
Prasyarat
-
Unduh dan instal Terraformer
Terraformer tersedia sebagai paket all-provider atau paket per-provider. Contoh berikut menunjukkan instalasi untuk Linux dan macOS. Opsi tambahan tersedia dalam panduan Instalasi.
-
Pengguna 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/terraformer-
Pengguna 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 -
-
Dependensi
-
Berikan izin read-only untuk resource terkait kepada akun saat ini.
-
Instal Terraform
CatatanAnda dapat melewati langkah ini jika menjalankan perintah di Cloud Shell.
Untuk informasi lebih lanjut, lihat Instal dan konfigurasi Terraform.
-
Unduh provider terkait. Anda dapat mengonfigurasi provider dengan salah satu dari dua cara berikut:
-
Inisialisasi provider di direktori tempat Anda menjalankan perintah Terraformer.
-
Unduh provider ke path ~/.terraform.d/plugins/.
-
-
Konfigurasi kredensial akses. Terraformer saat ini hanya mendukung autentikasi dengan membaca profil lokal. Secara default, kredensial pertama dalam profil digunakan untuk impor. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses Alibaba Cloud, lihat Konfigurasi dan kelola kredensial.
-
Penggunaan
Contoh berikut menggunakan terraformer-all-darwin-amd64 v0.8.24.
Terraformer mendukung empat perintah: help, import, plan, dan version.
-
help: Menampilkan detail tentang suatu perintah.
➜ ~ 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: Menampilkan nomor versi saat ini.
~ terraformer-all-darwin-arm64 version Terraformer v0.8.24 -
import: Mengimpor resource untuk provider tertentu.
➜ ~ 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: Melihat pratinjau resource yang akan diimpor untuk provider tertentu.
Contoh
Contoh berikut mengimpor semua VPC Alibaba Cloud di wilayah China (Hangzhou).
-
Buat direktori untuk menyimpan templat dan file state yang diimpor.
mkdir example && cd example -
Jalankan perintah berikut:
terraformer-all-darwin-arm64 import alicloud --resources=vpc --regions=cn-hangzhou --path-pattern={output} --path-output=./-
--resources: Menentukan kumpulan resource untuk diimpor. -
--regions: Menentukan wilayah tempat resource berada. -
--path-pattern: Menentukan pola struktur direktori yang dihasilkan. -
--path-output: Menentukan path output untuk file yang dihasilkan.
-
-
File templat yang dihasilkan adalah sebagai berikut. Secara default, informasi wilayah ditambahkan ke path direktori. Untuk menggabungkan semua templat resource ke dalam satu file, gunakan parameter
--compact, yang mengeluarkan semua resource keresources.tf.└── cn-hangzhou ├── outputs.tf ├── provider.tf ├── terraform.tfstate ├── variables.tf ├── vpc.tf └── vswitch.tf 2 directories, 6 files -
Untuk Terraform
>=0.13.0, jalankan perintah berikut untuk memperbarui file state agar kompatibel dengan versi tersebut.terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
Alibaba Cloud Terraformer - aliterraformer (Direkomendasikan)
aliterraformer memperluas Terraformer open-source dengan cakupan resource yang lebih luas, konfigurasi kredensial yang ditingkatkan, dan dimensi filter impor tambahan.
Prasyarat
-
Unduh dan instal
Unduh aliterraformer dari 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.zipSebagai contoh, pada macOS, ekstrak file setelah mengunduh:
unzip aliterraformer_darwin_amd64.zip chmod +x aliterraformer sudo mv aliterraformer /usr/local/bin/aliterraformer -
Dependensi
Seperti Terraformer open-source, Anda memerlukan binari terraform dan terraform-provider-alicloud serta kredensial akses yang dikonfigurasi.
-
Berikan izin read-only untuk resource terkait kepada akun Resource Access Management (RAM).
-
Instal Terraform
Untuk informasi lebih lanjut, lihat Instal dan konfigurasi Terraform. Anda dapat melewati langkah ini jika menjalankan perintah di Cloud Shell.
-
Unduh terraform-provider-alicloud
Anda dapat menentukan versi provider untuk impor. Struktur direktori cache berbeda antara versi sebelum v0.13.0 dan v0.13.0+. Path berikut berlaku untuk v0.13.0+:
# 1. Setel menggunakan variabel lingkungan TF_DATA_TFER_DIR <$TF_DATA_TFER_DIR>/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 2. Setel di direktori tersembunyi direktori kerja saat ini .terraform/providers/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 # 3. Setel di direktori tersembunyi direktori root pengguna <HOME>/.terraform.d/plugins/registry.terraform.io/aliyun/alicloud/1.239.0/darwin_arm64/terraform-provider-alicloud_v1.239.0 -
Konfigurasi kredensial akses
Selain menggunakan profil, Anda dapat menyetel kredensial akses di aliterraformer menggunakan variabel lingkungan dan parameter perintah:
# 1. Menggunakan variabel lingkungan ALICLOUD_ACCESS_KEY dan ALICLOUD_SECRET_KEY $ export ALICLOUD_ACCESS_KEY=xxxx $ export ALICLOUD_SECRET_KEY=xxxxx # 2. Dengan meneruskan parameter perintah --access-key dan --secret-key $ aliterraformer import alicloud --access-key=xxxx --secret-key=xxx ... # 3. Dengan menyetel dan meneruskan AK melalui mekanisme profil $ aliterraformer import alicloud --profile=default ...
-
Penggunaan
aliterraformer mendukung lima perintah: help, version, products, resources, import. Perintah products, resources merupakan tambahan pada Terraformer open-source.
-
help: Lihat detail tentang perintah yang didukung.
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: Lihat versi Terraformer saat ini.
aliterraformer version -
products: Daftar produk yang didukung untuk impor pada versi saat ini.
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: Daftar tipe resource yang dapat diimpor untuk suatu produk. Gunakan
-puntuk menentukan produk.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: Impor resource. Tentukan alicloud untuk Alibaba Cloud. Jalankan perintah berikut untuk melihat parameter yang tersedia:
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.Definisikan kumpulan resource untuk diimpor, lalu opsional filter resource dan ekstrak properti sebagai variabel.
-
Buat kumpulan resource:
Empat flag menentukan cakupan impor: <--products>, <--resources>, <--excludes-products>, dan <--excludes>. Gabungkan untuk membuat kumpulan resource:
-
Impor resource tertentu
# Impor VPC, vSwitch, dan instans ECS aliterraformer import alicloud -r=vpc,vswitch,instance -
Impor produk tertentu
# Impor semua resource di bawah produk ACK dan ALB aliterraformer import alicloud --products=ACK,ALB -
Impor produk dan resource tertentu
# Impor semua resource di bawah produk ACK dan ECS, serta semua VPC dan vSwitch aliterraformer import alicloud --products=ACK,ECS -r=vpc,vswitch -
Impor produk tertentu, tetapi kecualikan beberapa resource di dalam produk tersebut
# Impor semua resource di bawah ACK kecuali alicloud_cs_kubernetes aliterraformer import alicloud --products=ACK --excludes=cs_kubernetes -
Impor semua resource dari semua produk
# Memasukkan ALL untuk produk berarti semua produk aliterraformer import alicloud --products=ALL -
Impor semua resource dari semua produk, tetapi kecualikan produk tertentu
# Impor semua produk kecuali VPNGateway dan WAF aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAF -
Impor semua resource dari semua produk, tetapi kecualikan produk dan resource tertentu
# Impor semua produk kecuali VPNGateway dan WAF, dan kecualikan resource alicloud_cs_kubernetes aliterraformer import alicloud --products=ALL --excludes-products=VPNGateway,WAF --excludes=cs_kubernetes
-
-
Filter resource
Format:
--filter=Type1.AttrKey=AttrValue1;AttrValue2,Type2.AttrKey=AttrValue1;AttrValue2. Menghilangkan Type akan menerapkan filter ke semua resource.-
Impor VPC dengan ID vpc-123
# Untuk menentukan beberapa nilai, pisahkan dengan titik koma: --filter="vpc.id=vpc-123;vpc-456" aliterraformer import alicloud -r=vpc --filter="vpc.id=vpc-123" -
Impor VPC dan vSwitch yang keduanya bernama tf-example
aliterraformer import alicloud -r=vpc,vswitch --filter="vpc.vpc_name=tf-example,vswitch.vswitch_name=tf-example" -
Impor VPC dan instans ECS yang keduanya termasuk dalam kelompok sumber daya rg-12345
aliterraformer import alicloud -r=vpc,instance --filter="resource_group_id=rg-12345"
-
-
Ekstrak properti sebagai variabel menggunakan output-variables
Format:
r1:attr1,attr2;r2:attr1,attr2,attr3.-
Ekstrak vpc_id dan vswitch_id dari instans ECS sebagai variabel
aliterraformer import alicloud -r=instance --output-variables="instance:vpc_id,vswitch_id"
-
-
Contoh
Contoh ini mengimpor VPC, vSwitch, dan instans ECS dengan ID VPC vpc-12345 di China (Hangzhou), mengekstrak zone_id vSwitch sebagai variabel:
-
Buat direktori untuk menyimpan templat dan file state yang diimpor.
mkdir example && cd example -
Buat perintah impor.
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: Menentukan folder impor. -
--path-pattern: Struktur direktori untuk templat yang diimpor. Default:{output}/{provider}/{service}/. Alternatif:{output}/{provider}/dan{output}/. Menggunakan--path-pattern={output}menempatkan semua templat dalam satu folder. -
--compact: Menggabungkan semua resource ke dalam satu fileresources.tfalih-alih file terpisah{service}.tf.
-
-
Setelah impor, file berikut dihasilkan di direktori example:
. ├── outputs.tf ├── provider.tf ├── resources.tf ├── terraform.tfstate └── variables.tfTanpa
--path-pattern={output}, struktur direktori adalah:. └── 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 -
Untuk Terraform
>=0.13.0, jalankan perintah berikut untuk memperbarui file state agar kompatibel dengan versi tersebut.terraform state replace-provider -auto-approve "registry.terraform.io/-/alicloud" "aliyun/alicloud"
Masukan dan saran
Untuk pertanyaan atau saran, bergabunglah dengan grup DingTalk (ID Grup: 34240022836) atau kirimkan issue di halaman GitHub Terraform Provider Alibaba Cloud.