Terraform adalah alat Infrastructure as Code (IaC) yang membantu pengembang dan tim O&M mengotomatiskan pembuatan, penyebaran, serta pengelolaan infrastruktur cloud. Dengan Terraform, Anda dapat menulis kode sederhana untuk mendefinisikan dan mengonfigurasi infrastruktur cloud tanpa perlu operasi atau konfigurasi manual. Topik ini menjelaskan cara menggunakan Terraform untuk membuat instance Elastic Compute Service (ECS).
Untuk informasi lebih lanjut tentang Terraform, lihat Apa itu Terraform?.
Persiapan
Langkah 1: Instal Terraform
Bagian ini menjelaskan cara menginstal Terraform di Linux atau Windows menggunakan paket instalasi.
Alibaba Cloud menyediakan lingkungan online Terraform berikut. Dalam lingkungan tersebut, Anda dapat menjalankan perintah Terraform tanpa perlu menginstal Terraform.
Terraform Explorer: Tempelkan kode contoh yang disediakan dalam topik ini ke editor kode dan klik Mulai Debugging untuk menjalankan kode contoh secara otomatis.
Cloud Shell: Masuk ke Cloud Shell dan tempel serta jalankan perintah Terraform dari kode contoh yang disediakan dalam topik ini.
Unduh paket instalasi Terraform yang sesuai dengan sistem operasi Anda dari situs resmi Terraform.
Konfigurasikan lingkungan runtime Terraform.
Linux
Jalankan perintah berikut untuk mengekstrak paket instalasi ke direktori /usr/local/bin.
# Ganti {your_zip_path} dengan jalur tempat paket instalasi disimpan. Jika sistem operasi tidak mendukung perintah unzip, instal perintah tersebut. sudo unzip {your_zip_path} -d /usr/local/binWindows
Ekstrak paket instalasi ke direktori, seperti D:\tool\terraform.
Di desktop Windows, klik kanan This PC dan pilih Properties. Pada halaman yang muncul, klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Di kotak dialog Environment Variables, buka bagian User variables atau System variables.
Di bagian System variables atau User variables, pilih Path dan klik Edit. Di kotak dialog yang muncul, klik New. Lalu, masukkan direktori tempat Anda mengekstrak paket instalasi Terraform, seperti D:\tool\terraform, dan klik OK.
Jalankan perintah
terraformuntuk memeriksa apakah Terraform telah terinstal.terraformJika daftar opsi Terraform yang tersedia ditampilkan, seperti yang ditunjukkan pada gambar berikut, instalasi selesai.

Langkah 2: Konfigurasikan autentikasi identitas Terraform
Sebelum menggunakan Terraform untuk mengelola infrastruktur Alibaba Cloud, Anda harus melewati autentikasi identitas Terraform Provider. Anda hanya dapat menggunakan Terraform untuk memanggil operasi API Alibaba Cloud dan membuat serta mengelola infrastruktur setelah berhasil melewati autentikasi.
Jika Anda menggunakan Terraform Explorer atau Cloud Shell, Anda tidak perlu mengonfigurasi autentikasi identitas Terraform. Pastikan akun Anda memiliki izin untuk mengelola sumber daya Virtual Private Cloud (VPC) dan ECS.
Dalam contoh ini, pasangan AccessKey dari Pengguna Resource Access Management (RAM) yang diperoleh dari variabel lingkungan digunakan untuk autentikasi identitas.
Buat pasangan AccessKey untuk Pengguna RAM Anda. Akun Alibaba Cloud memiliki semua izin pada sumber daya. Jika pasangan AccessKey akun Alibaba Cloud Anda bocor, sumber daya yang dimiliki akun tersebut akan terpapar pada risiko potensial. Kami merekomendasikan agar Anda menggunakan pasangan AccessKey Pengguna RAM. Untuk informasi tentang cara membuat pasangan AccessKey untuk Pengguna RAM, lihat bagian Buat Pasangan AccessKey untuk Pengguna RAM dari topik "Buat Pasangan AccessKey".
Berikan izin kepada Pengguna RAM untuk mengelola sumber daya ECS dan VPC. Kami merekomendasikan agar Anda mengikuti prinsip hak istimewa minimal. Untuk informasi tentang cara memberikan izin kepada Pengguna RAM, lihat Berikan Izin kepada Pengguna RAM. Kode contoh yang disediakan dalam topik ini menciptakan sumber daya seperti instance ECS, VPC, dan vSwitch. Untuk memberikan izin yang diperlukan untuk menjalankan kode contoh, kami merekomendasikan agar Anda melampirkan kebijakan yang dijelaskan dalam tabel berikut ke Pengguna RAM.
Layanan Alibaba Cloud
Kebijakan
VPC
AliyunVPCFullAccess
ECS
AliyunECSFullAccess
Buat variabel lingkungan untuk menyimpan informasi autentikasi.
Linux
PentingVariabel lingkungan sementara yang dikonfigurasi menggunakan perintah export hanya valid untuk sesi saat ini. Setelah Anda keluar dari sesi, variabel lingkungan yang dikonfigurasi menjadi tidak valid. Untuk mengonfigurasi variabel lingkungan permanen, Anda dapat menambahkan perintah export ke file konfigurasi startup sistem operasi Anda.
# AccessKey Id export ALICLOUD_ACCESS_KEY="yourAccessKeyID" # AccessKey Secret export ALICLOUD_SECRET_KEY="yourAccessKeySecret" # Wilayah tempat Anda ingin menyebarkan sumber daya. export ALICLOUD_REGION="cn-beijing"Windows
Di desktop Windows, klik kanan This PC dan pilih Properties. Pada halaman yang muncul, klik Advanced system settings. Di kotak dialog System Properties, klik Environment Variables pada tab Advanced. Di kotak dialog Environment Variables, buka bagian User variables atau System variables.
Di bagian System variables atau User variables, klik New. Di kotak dialog yang muncul, buat variabel lingkungan yang dijelaskan dalam tabel berikut.
Variabel
Deskripsi
Nilai
ALICLOUD_ACCESS_KEY
AccessKey Id
yourAccessKeyID
ALICLOUD_SECRET_KEY
AccessKey Secret
yourAccessKeySecret
ALICLOUD_REGION
Wilayah tempat Anda ingin menyebarkan sumber daya
Contoh: cn-beijing
Sumber Daya Terraform Terkait
Bagian ini menjelaskan sumber daya Terraform yang digunakan dalam kode contoh yang disediakan dalam topik ini.
Anda akan dikenakan biaya untuk sumber daya tertentu. Jika Anda tidak lagi memerlukan sumber daya tersebut, lepaskan atau berhenti berlangganan dari sumber daya tersebut sesegera mungkin.
Sumber Daya
alicloud_vpc: membuat VPC.
alicloud_vswitch: membuat vSwitch.
alicloud_security_group: membuat grup keamanan.
alicloud_security_group_rule: membuat aturan grup keamanan.
alicloud_instance: membuat instance ECS.
Sumber Data
alicloud_zones: menanyakan zona tempat Anda dapat membuat instance ECS dengan tipe instans tertentu secara dinamis.
Kompilasi File Konfigurasi Terraform
Definisikan sumber daya infrastruktur yang diperlukan untuk membuat instance ECS, seperti VPC dan vSwitch, dalam file konfigurasi main.tf. Anda dapat langsung menyalin kode contoh di bagian Kode Contoh Lengkap dari topik ini ke file konfigurasi.
Buat file konfigurasi main.tf.
Sumber daya infrastruktur Terraform didefinisikan dalam file konfigurasi. Anda harus terlebih dahulu membuat file konfigurasi.
Linux
# Buat direktori kerja. mkdir terraform-projects && cd terraform-projects mkdir ecs-quickstart && cd ecs-quickstart # Buat dan buka file konfigurasi main.tf. touch main.tf && vim main.tfWindows
Buat folder, seperti folder ecs-quickstart, dan buat file konfigurasi Terraform di dalam folder. Dalam contoh ini, nama file konfigurasi adalah main.tf.
Konfigurasikan pengaturan penyedia.
Tentukan wilayah untuk menyebarkan sumber daya Alibaba Cloud.
# Wilayah tempat Anda ingin menyebarkan sumber daya. variable "region" { default = "cn-chengdu" } provider "alicloud" { region = var.region }Konfigurasikan VPC dan asosiasikan blok CIDR dengan VPC.
VPC adalah jaringan pribadi khusus di cloud. Anda dapat mengonfigurasi dan mengelola VPC sebagai jaringan yang diisolasi secara logis di cloud publik.
variable "instance_name" { default = "tf-sample" } # Tipe instance ECS. variable "instance_type" { default = "ecs.e-c1m2.large" } # Menanyakan zona yang sesuai dengan kondisi tertentu. data "alicloud_zones" "default" { available_disk_category = "cloud_essd" available_resource_creation = "VSwitch" available_instance_type = var.instance_type } # Buat VPC. resource "alicloud_vpc" "vpc" { vpc_name = var.instance_name cidr_block = "172.16.0.0/12" } # Buat vSwitch. resource "alicloud_vswitch" "vsw" { vpc_id = alicloud_vpc.vpc.id cidr_block = "172.16.0.0/21" zone_id = data.alicloud_zones.default.zones.0.id }Buat grup keamanan dan tambahkan aturan grup keamanan ke grup keamanan.
Grup keamanan bertindak sebagai firewall virtual yang mengontrol lalu lintas masuk dan keluar untuk instance ECS.
# Buat grup keamanan. resource "alicloud_security_group" "default" { name = var.instance_name vpc_id = alicloud_vpc.vpc.id } # Tambahkan aturan masuk ke grup keamanan. resource "alicloud_security_group_rule" "allow_tcp_22" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "22/22" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" }Buat instance ECS.
ECS menyediakan kapasitas komputasi berperforma tinggi, aman, dan hemat biaya yang cocok untuk berbagai skenario, seperti hosting situs web, pengembangan aplikasi, dan pemrosesan data. Dengan menggunakan ECS, Anda dapat dengan cepat menerapkan dan menjalankan aplikasi serta menyesuaikan sumber daya secara fleksibel sebagai respons terhadap perubahan bisnis.
# ID gambar instance ECS. variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # Bandwidth publik instance ECS. variable "internet_bandwidth" { default = "10" } # Kata sandi logon instance ECS. variable "password" { default = "Test@12345" } # Jumlah instance ECS yang ingin Anda buat. Nilai default: 1. variable "ecs_count" { default = 1 } # Buat instance ECS. resource "alicloud_instance" "instance" { count = var.ecs_count availability_zone = data.alicloud_zones.default.zones.0.id security_groups = alicloud_security_group.default.*.id password = var.password instance_type = var.instance_type system_disk_category = "cloud_essd" image_id = var.image_id instance_name = var.instance_name vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_bandwidth } output "public_ip" { value = alicloud_instance.instance.*.public_ip }
Kode Contoh Lengkap
Jalankan Perintah Terraform untuk Membuat Sumber Daya
Setelah Anda menyusun file konfigurasi Terraform, jalankan perintah Terraform untuk secara otomatis membuat instance ECS yang Anda definisikan.
Langkah 1: Inisialisasi Terraform
Jalankan perintah terraform init untuk mengunduh dan menginstal plugin penyedia Alibaba Cloud ke folder saat ini. Perintah ini juga menghasilkan file rekaman terkait.
Linux
terraform initWindows
Buka jendela Command Prompt, pergi ke folder tempat file konfigurasi Terraform disimpan, lalu jalankan perintah terraform init untuk menginisialisasi Terraform.
# Sebagai contoh, file konfigurasi disimpan di direktori D:/ecs-quickstart.
# Beralih ke disk D.
d:
# Pergi ke folder tempat file konfigasi disimpan. Dalam contoh ini, file konfigurasi disimpan di folder ecs-quickstart. Ganti folder tersebut dengan folder aktual.
cd ecs-quickstart
# Jalankan perintah inisialisasi.
terraform initKeluaran perintah berikut menunjukkan bahwa Terraform telah diinisialisasi:
Terraform telah berhasil diinisialisasi!
Anda sekarang dapat mulai bekerja dengan Terraform. Coba jalankan "terraform plan" untuk melihat
perubahan apa pun yang diperlukan untuk infrastruktur Anda. Semua perintah Terraform
seharusnya sekarang berfungsi.
Jika Anda pernah menyetel atau mengubah modul atau konfigurasi backend untuk Terraform,
jalankan kembali perintah ini untuk menginisialisasi ulang direktori kerja Anda. Jika Anda lupa, perintah lain
akan mendeteksinya dan mengingatkan Anda untuk melakukannya jika perlu.Langkah 2: Pratinjau kode Terraform
Jalankan perintah terraform plan untuk melakukan operasi berikut:
Verifikasi sintaks kode Terraform dalam file konfigurasi
main.tf.Tampilkan hasil pratinjau sumber daya yang ingin Anda buat menggunakan kode Terraform saat ini.
terraform planKeluaran perintah berikut menunjukkan bahwa kode Terraform dalam file konfigurasi tidak memiliki kesalahan sintaks. Dalam hal ini, Anda dapat menjalankan perintah terraform apply untuk membuat sumber daya. Jika terjadi kesalahan, modifikasi file konfigurasi Terraform sesuai petunjuk.
...
Plan: 5 to add, 0 to change, 0 to destroy.Langkah 3: Jalankan kode Terraform
Jalankan perintah terraform apply untuk secara otomatis membuat instance ECS yang Anda definisikan dalam kode Terraform dan sumber daya dependen dari instans tersebut serta secara otomatis menginstal Python. Selama proses pembuatan, masukkan yes sesuai petunjuk untuk mengizinkan Terraform membuat semua sumber daya yang didefinisikan.
terraform applyKeluaran perintah berikut menunjukkan bahwa instance ECS dan sumber daya dependennya telah dibuat:
...
Apakah Anda ingin melakukan tindakan ini?
Terraform akan melakukan tindakan yang dijelaskan di atas.
Hanya 'yes' yang akan diterima untuk menyetujui.
Masukkan nilai: yes
alicloud_vpc.vpc: Membuat...
alicloud_vpc.vpc: Pembuatan selesai setelah 6s [id=vpc-2vcsghlpznz74XXXXXXXX]
alicloud_security_group.default: Membuat...
alicloud_vswitch.vsw: Membuat...
alicloud_security_group.default: Pembuatan selesai setelah 1s [id=sg-2vcdz6b8h9c3XXXXXXXX]
alicloud_security_group_rule.allow_tcp_22: Membuat...
alicloud_security_group_rule.allow_tcp_22: Pembuatan selesai setelah 0s [id=sg-2vcdz6b8h9c3XXXXXXXX:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_vswitch.vsw: Pembuatan selesai setelah 4s [id=vsw-2vc50dknug30bXXXXXXXX]
alicloud_instance.instance: Membuat...
alicloud_instance.instance: Masih membuat... [10s berlalu]
alicloud_instance.instance: Pembuatan selesai setelah 15s [id=i-2vc3rf151bwcXXXXXXXX]
Apply complete! Resources: 5 ditambahkan, 0 diubah, 0 dihapus.
Outputs:
public_ip = [
"4XX.XXX.XXX.XX7",
]Hubungkan ke Instance ECS
Setelah instance ECS dibuat, Anda dapat menghubungkan ke instans tersebut melalui SSH menggunakan alamat IP publik instans tersebut. Untuk informasi lebih lanjut, lihat Metode untuk Menghubungkan ke Instance ECS.
ssh <Nama Pengguna instance ECS>@<Alamat IP Publik instance ECS>Lihat Hasil Pembuatan
Jalankan Perintah Terraform
Jalankan perintah berikut untuk melihat informasi tentang instance ECS yang dibuat:
# Sintaks perintah: terraform state show <Tipe Sumber Daya>.<Alias Sumber Daya>
terraform state show alicloud_instance.instanceMasuk ke Konsol ECS
Masuk ke Konsol ECS untuk melihat informasi tentang instance ECS yang dibuat.
Modifikasi Sumber Daya
Jika Anda ingin memodifikasi konfigurasi instance ECS, Anda dapat memodifikasi definisi sumber daya dalam file konfigurasi. Sebagai contoh, Anda dapat menambahkan aturan masuk ke grup keamanan tempat instance ECS tersebut termasuk.
Jika Anda ingin menambahkan aturan ke grup keamanan untuk mengizinkan lalu lintas masuk pada port 443, tambahkan kode berikut ke file konfigurasi:
resource "alicloud_security_group_rule" "allow_tcp_443" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "443/443" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" }Jalankan perintah
terraform planuntuk melihat pratinjau perubahan. Keluaran perintah berikut menunjukkan bahwa aturan grup keamanan akan ditambahkan ke grup keamanan dengan IDsg-2vcdz6b8h9c3XXXXXXXX:... Terraform akan melakukan tindakan berikut: # alicloud_security_group_rule.allow_tcp_443 akan dibuat + resource "alicloud_security_group_rule" "allow_tcp_443" { + cidr_ip = "0.0.0.0/0" + id = (diketahui setelah apply) + ip_protocol = "tcp" + nic_type = "intranet" + policy = "accept" + port_range = "443/443" + prefix_list_id = (diketahui setelah apply) + priority = 1 + security_group_id = "sg-2vcdz6b8h9c3XXXXXXXX" + type = "ingress" } Plan: 1 to add, 0 to change, 0 to destroy.Jika perubahan sesuai dengan harapan Anda, jalankan perintah
terraform applyuntuk menerapkan perubahan ke infrastruktur Anda. Saat menjalankan perintah, Anda akan diminta untuk mengonfirmasi apakah akan menerapkan perubahan. Masukkanyesdan tekan tombol Enter untuk menerapkan perubahan. Keluaran perintah berikut menunjukkan bahwa aturan grup keamanan telah ditambahkan ke grup keamanan dengan IDsg-2vcdz6b8h9c3XXXXXXXX:... Apakah Anda ingin melakukan tindakan ini? Terraform akan melakukan tindakan yang dijelaskan di atas. Hanya 'yes' yang akan diterima untuk menyetujui. Masukkan nilai: yes alicloud_security_group_rule.allow_tcp_443: Membuat... alicloud_security_group_rule.allow_tcp_443: Pembuatan selesai setelah 0s [id=sg-2vcdz6b8h9c3XXXXXXXX:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1] Apply complete! Resources: 1 ditambahkan, 0 diubah, 0 dihapus.
Lepaskan Sumber Daya
Jika Anda tidak lagi memerlukan sumber daya yang dibuat atau dikelola menggunakan Terraform, jalankan perintah berikut untuk melepaskan sumber daya:
terraform destroyKeluaran perintah berikut menunjukkan bahwa sumber daya telah dilepaskan:
...
Apakah Anda benar-benar ingin menghancurkan semua sumber daya?
Terraform akan menghancurkan semua infrastruktur yang dikelola, seperti yang ditunjukkan di atas.
Tidak ada pengembalian. Hanya 'yes' yang akan diterima untuk mengonfirmasi.
Masukkan nilai: yes
alicloud_security_group_rule.allow_tcp_443: Menghancurkan... [id=sg-2vcdz6b8h9c3XXXXXXXX:ingress:tcp:443/443:intranet:0.0.0.0/0:accept:1]
alicloud_security_group_rule.allow_tcp_22: Menghancurkan... [id=sg-2vcdz6b8h9c3XXXXXXXX:ingress:tcp:22/22:intranet:0.0.0.0/0:accept:1]
alicloud_instance.instance: Menghancurkan... [id=i-2vc3rf151bwcXXXXXXXX]
alicloud_security_group_rule.allow_tcp_22: Penghancuran selesai setelah 0s
alicloud_security_group_rule.allow_tcp_443: Penghancuran selesai setelah 0s
alicloud_instance.instance: Masih menghancurkan... [id=i-2vc3rf151bwcXXXXXXXX, 10s berlalu]
alicloud_instance.instance: Penghancuran selesai setelah 10s
alicloud_security_group.default: Menghancurkan... [id=sg-2vcdz6b8h9c3XXXXXXXX]
alicloud_vswitch.vsw: Menghancurkan... [id=vsw-2vc50dknug30bXXXXXXXX]
alicloud_security_group.default: Penghancuran selesai setelah 1s
alicloud_vswitch.vsw: Penghancuran selesai setelah 8s
alicloud_vpc.vpc: Menghancurkan... [id=vpc-2vcsghlpznz74XXXXXXXX]
alicloud_vpc.vpc: Penghancuran selesai setelah 6s
Destroy complete! Resources: 6 dihancurkan.Referensi
Untuk informasi tentang
resourcesdandata sourcesyang didukung oleh ECS, lihat bagian Sumber Daya yang Didukung dari topik "Referensi Terraform".Anda dapat men-debug kode Terraform di Terraform Explorer tanpa perlu menginstal atau mengonfigurasi Terraform. Untuk informasi lebih lanjut, lihat Gunakan Terraform di Terraform Explorer.
Anda dapat menjalankan perintah Terraform di Cloud Shell tanpa perlu menginstal atau mengonfigurasi Terraform. Untuk informasi lebih lanjut, lihat Gunakan Terraform di Cloud Shell.