Terraform adalah alat infrastruktur sebagai kode (IaC) sumber terbuka yang memungkinkan pengembang mendefinisikan dan mengelola konfigurasi infrastruktur menggunakan bahasa deklaratif. Terraform menyederhanakan pembuatan, modifikasi, dan penghapusan sumber daya Elastic Compute Service (ECS). Alat ini membantu mengurangi kompleksitas serta kesalahan operasi manual, meningkatkan kemampuan pengelolaan dan pemeliharaan infrastruktur. Topik ini menjelaskan cara menginstal dan mengonfigurasi Terraform serta menggunakan Terraform untuk membuat instans ECS.
Fitur dasar Terraform
Terraform mendukung orkestrasi otomatis infrastruktur TI, memungkinkan Anda menggunakan kode untuk mengelola dan memelihara sumber daya TI. Untuk informasi lebih lanjut, lihat Apa itu Terraform?
Terraform menyediakan CLI yang mudah digunakan untuk menerapkan file konfigurasi di Alibaba Cloud atau cloud pihak ketiga, serta mengelola versi file konfigurasi tersebut. Terraform memungkinkan Anda mendefinisikan sumber daya infrastruktur seperti mesin virtual (VM), akun penyimpanan, dan antarmuka jaringan dalam file konfigurasi.
Terraform dapat diintegrasikan dengan penyedia Alibaba Cloud untuk mendukung infrastruktur baru. Anda dapat menggunakan template untuk mengonfigurasi penyedia Alibaba Cloud, mendefinisikan, meninjau, dan menerapkan infrastruktur cloud di Alibaba Cloud.
Anda dapat menggunakan Terraform untuk membuat, memodifikasi, dan menghapus berbagai layanan Alibaba Cloud.
Untuk informasi tentang cara mengintegrasikan layanan Alibaba Cloud dengan Terraform, lihat Penyedia Alibaba Cloud.
Instal Terraform
Gunakan Cloud Shell
Cloud Shell di Alibaba Cloud adalah layanan O&M gratis yang dilengkapi dengan Terraform. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell.
Pastikan Anda memiliki akun Alibaba Cloud yang valid dengan izin terkait.
Buka browser dan masukkan https://shell.alibabacloud.com/ di bilah alamat untuk mengakses Cloud Shell.
Setelah masuk ke Cloud Shell, jalankan perintah berikut:
terraformKeluaran perintah pada gambar berikut menunjukkan bahwa Terraform tersedia di Cloud Shell dan siap digunakan.

Untuk informasi tentang cara menggunakan Cloud Shell, lihat Gunakan Cloud Shell.
Instalasi manual
Gunakan paket pra-kompilasi
Kunjungi situs resmi Terraform, temukan paket ZIP sesuai sistem operasi Anda, lalu unduh paket tersebut.
Ekstrak paket yang diunduh ke direktori /usr/local/bin. Anda dapat menghapus paket setelah diekstrak karena tidak memengaruhi operasi Terraform.
Pastikan direktori Terraform didefinisikan dalam variabel lingkungan PATH. Nilai variabel lingkungan PATH bervariasi berdasarkan sistem operasi.
Windows
Pilih Control Panel > System > Pengaturan Sistem > Variabel Lingkungan.
Gulir ke bawah di bagian variabel sistem hingga Anda menemukan PATH.
Klik Edit dan modifikasi nilai variabel lingkungan PATH.
Pisahkan direktori dengan titik koma (;). Contoh: c:\path;c:\path2.
Mulai alat baris perintah agar pengaturan diterapkan.
Untuk informasi lebih lanjut, lihat Di mana saya bisa mengatur path untuk make.exe di Windows?
macOS atau Linux
Tampilkan nilai variabel lingkungan PATH.
echo $PATHPindahkan file biner Terraform ke salah satu direktori dalam nilai variabel lingkungan PATH. Anda dapat menentukan direktori sumber dan tujuan dalam perintah mv. Misalnya, file biner Terraform ada di folder Downloads dan nilai variabel lingkungan PATH mencakup direktori /usr/local/bin, Anda dapat menjalankan perintah berikut:
mv ~/Downloads/terraform /usr/local/bin/Untuk informasi lebih lanjut, lihat topik berikut:
Gunakan kode sumber
Jika Anda ingin mengkompilasi file biner dari kode sumber, jalankan perintah berikut untuk mengkloning repositori HashiCorp Terraform:
git clone https://github.com/hashicorp/terraform.gitKeluaran perintah pada gambar berikut menunjukkan kemajuan pengklonan. Tunggu hingga pengklonan selesai.

Setelah repositori dikloning, direktori bernama terraform akan ditambahkan ke direktori tempat Anda ingin menjalankan perintah instalasi. Jalankan perintah cd untuk masuk ke direktori /terraform.
cd terraformJalankan perintah instalasi untuk mengkompilasi direktori dan memindahkan paket yang dikompilasi ke direktori $GOPATH/bin/terraform.
go installKeluaran perintah pada gambar berikut menunjukkan bahwa kompilasi sedang berlangsung. Tunggu hingga kompilasi selesai dan lanjutkan ke langkah berikutnya.

Perhatikan bahwa jika pesan kesalahan "zsh: command not found: go" muncul, Anda harus terlebih dahulu menginstal lingkungan Go.
Pastikan direktori Terraform didefinisikan dalam variabel lingkungan PATH dan tersedia. Nilai variabel lingkungan PATH bervariasi berdasarkan sistem operasi Anda.
macOS atau Linux
Tampilkan nilai variabel lingkungan PATH.
echo $PATHPindahkan file biner Terraform ke salah satu direktori dalam nilai variabel lingkungan PATH. Anda dapat menentukan direktori sumber dan tujuan dalam perintah mv. Misalnya, file biner Terraform ada di folder Downloads dan nilai variabel lingkungan PATH mencakup direktori /usr/local/bin, Anda dapat menjalankan perintah berikut:
mv ~/Downloads/terraform /usr/local/bin/Untuk informasi lebih lanjut, lihat topik berikut:
Windows
Pilih Control Panel > System > Pengaturan Sistem > Variabel Lingkungan.
Gulir ke bawah di variabel sistem hingga Anda menemukan PATH.
Klik Edit dan modifikasi nilai variabel lingkungan PATH.
Pisahkan direktori dengan titik koma (;). Contoh: c:\path;c:\path2.
Mulai alat baris perintah agar pengaturan diterapkan.
Untuk informasi lebih lanjut, lihat Di mana saya bisa mengatur path untuk make.exe di Windows?
Homebrew macOS
Homebrew adalah alat yang sering digunakan untuk menginstal paket di macOS. Anda dapat menggunakan Homebrew untuk menginstal Terraform dengan beberapa perintah.
Langkah 1: Instal HashiCorp tap, yaitu repositori semua paket Homebrew untuk HashiCorp.
brew tap hashicorp/tapLangkah 2: Jalankan perintah berikut untuk menginstal Terraform:
brew install hashicorp/tap/terraformPerintah ini menginstal versi terbaru Terraform. Jika versi yang lebih baru tersedia setelah Terraform diinstal, Anda dapat menjalankan perintah pembaruan untuk memperbarui Terraform.
Sebelum memperbarui Terraform, jalankan perintah berikut untuk memperbarui Homebrew:
brew updateJalankan perintah berikut untuk memperbarui Terraform ke versi terbaru:
brew upgrade hashicorp/tap/terraformLinux
Alibaba Cloud Liunx
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform

Chocolatey Windows
Chocolatey adalah alat yang sering digunakan untuk menginstal paket di Windows. Anda dapat menggunakan Chocolatey untuk menginstal Terraform dengan beberapa perintah.
choco install terraformOtentikasi Terraform
Anda dapat menyimpan kredensial akses di variabel lingkungan tertentu dan menggunakan variabel lingkungan tersebut untuk mengotentikasi Terraform. Saat menjalankan perintah Terraform, jika tidak ada kredensial akses yang dinyatakan secara eksplisit dalam template konfigurasi, Terraform dapat memperoleh kredensial akses dari variabel lingkungan. Konfigurasikan variabel lingkungan berdasarkan sistem operasi.
Windows
Di desktop Windows, klik kanan This PC dan pilih Properties. Di halaman yang muncul, klik Advanced system settings. Dalam kotak dialog System Properties, klik Environment Variables pada tab Advanced. Kotak dialog Environment Variables muncul dan terdiri dari bagian User variables dan System variables.
Di bagian System variables atau User variables, klik New. Dalam kotak dialog yang muncul, buat variabel lingkungan yang dijelaskan dalam tabel berikut.
Variabel
Deskripsi
Nilai
ALICLOUD_ACCESS_KEY
ID AccessKey.
yourAccessKeyID
ALICLOUD_SECRET_KEY
Rahasia AccessKey.
yourAccessKeySecret
ALICLOUD_SECURITY_TOKEN
Opsional. Jika Anda menggunakan token Layanan Keamanan (STS), Anda harus menentukan variabel ini.
yourSTSToken
Linux
Variabel lingkungan sementara yang dikonfigurasi menggunakan perintah export hanya valid untuk sesi saat ini. Setelah keluar dari sesi, variabel lingkungan yang dikonfigurasi menjadi tidak valid. Untuk mengonfigurasi variabel lingkungan permanen, tambahkan perintah export ke file konfigurasi startup sistem operasi Anda.
# Access Key Id
$ export ALICLOUD_ACCESS_KEY="yourAccessKeyID"
# Access Key Secret
$ export ALICLOUD_SECRET_KEY="yourAccessKeySecret"
# Jika Anda menggunakan token STS, atur variabel lingkungan ALICLOUD_SECURITY_TOKEN ke token STS.
$ export ALICLOUD_SECURITY_TOKEN="yourSTStoken"Setelah mengonfigurasi variabel lingkungan, Anda tidak perlu mendeklarasikan kredensial akses secara eksplisit atau cukup mendeklarasikan ID wilayah di blok kode penyedia dalam template konfigurasi.
provider "alicloud" {
region = "cn-hangzhou"
}Anda juga dapat menentukan ID wilayah menggunakan variabel lingkungan ALICLOUD_REGION. Jika tidak ada ID wilayah yang dideklarasikan dan variabel lingkungan ALICLOUD_REGION tidak dikonfigurasi, cn-beijing digunakan sebagai nilai parameter wilayah.
Sumber daya yang didukung
Setiap sumber daya adalah sumber daya baru, seperti instans ECS, mesin virtual (VM), atau grup keamanan, yang digunakan untuk mendefinisikan komponen infrastruktur.
Gunakan Terraform untuk membuat dan mengelola sumber daya ECS
Berikut ini menjelaskan cara membuat instans ECS menggunakan Terraform.
Buat direktori kerja dan file konfigurasi bernama main.tf di direktori tersebut. Kode berikut digunakan untuk membuat instans ECS serta virtual private cloud (VPC), grup keamanan, dan vSwitch yang diperlukan untuk membuat instans ECS. Salin kode berikut ke file konfigurasi main.tf:
# Tentukan variabel bernama region untuk merepresentasikan wilayah Alibaba Cloud. Nilai default variabel ini adalah cn-beijing. variable "region"{ default = "cn-beijing" } # Konfigurasikan penyedia Alibaba Cloud dan tentukan wilayah yang didefinisikan dalam variabel region. provider "alicloud"{ region = var.region } # Tentukan variabel string bernama instance_type untuk merepresentasikan tipe instans ECS. Nilai default variabel ini adalah ecs.e-c1m1.large. variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # Gunakan sumber data dan konfigurasikan tipe instans yang ditentukan, tipe sumber daya (seperti vSwitch), dan kategori disk sebagai filter untuk menanyakan zona di mana Anda dapat membuat instans ECS. data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_essd" } # Tentukan variabel bernama vpc_cidr_block untuk merepresentasikan blok CIDR yang ingin Anda asosiasikan dengan VPC. Nilai default variabel ini adalah 172.16.0.0/16. variable "vpc_cidr_block" { default = "172.16.0.0/16" } # Tentukan variabel bernama vsw_cidr_block untuk merepresentasikan blok CIDR yang ingin Anda asosiasikan dengan vSwitch. Nilai default variabel ini adalah 172.16.0.0/24. variable "vsw_cidr_block" { default = "172.16.0.0/24" } # Hasilkan bilangan bulat acak dari 10000 hingga 99999 untuk memastikan keunikan nama sumber daya tertentu. resource "random_integer" "default" { min = 10000 max = 99999 } # Buat VPC bernama vpc-test dan gunakan bilangan bulat acak untuk memastikan keunikan nama. resource "alicloud_vpc" "vpc" { vpc_name = "vpc-test_${random_integer.default.result}" cidr_block = var.vpc_cidr_block } # Buat grup keamanan di VPC yang telah dibuat dan gunakan bilangan bulat acak untuk memastikan keunikan nama grup keamanan. resource "alicloud_security_group" "group" { security_group_name = "test_${random_integer.default.result}" # Ganti test_$ dengan nilai sebenarnya. vpc_id = alicloud_vpc.vpc.id } # Buat aturan grup keamanan masuk yang mengizinkan semua lalu lintas TCP dalam grup keamanan yang telah dibuat. resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" # Atur parameter nic_type menjadi 'intranet'. policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.group.id cidr_ip = "0.0.0.0/0" } # Buat vSwitch di zona yang ditentukan dan VPC yang telah dibuat, serta gunakan bilangan bulat acak untuk memastikan keunikan nama vSwitch. resource "alicloud_vswitch" "vswitch" { vpc_id = alicloud_vpc.vpc.id cidr_block = var.vsw_cidr_block zone_id = data.alicloud_zones.default.zones[0].id vswitch_name = "vswitch-test-${random_integer.default.result}" } # Tentukan beberapa parameter, termasuk zona, grup keamanan, dan tipe instans, untuk membuat instans ECS dan gunakan bilangan bulat acak untuk memastikan keunikan nama instans. resource "alicloud_instance" "instance" { availability_zone = data.alicloud_zones.default.zones[0].id security_groups = [alicloud_security_group.group.id] instance_type = var.instance_type system_disk_category = "cloud_essd" system_disk_name = "test_foo_system_disk_${random_integer.default.result}" system_disk_description = "test_foo_system_disk_description" image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd" instance_name = "test_ecs_${random_integer.default.result}" vswitch_id = alicloud_vswitch.vswitch.id internet_max_bandwidth_out = 10 password = "Terraform@Example" # Konfigurasikan kata sandi untuk instans ECS. Ganti Terraform@Example dengan nilai sebenarnya. }Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform:
terraform initKeluaran perintah berikut menunjukkan bahwa Terraform telah diinisialisasi:
Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.Jalankan perintah berikut untuk menjalankan kode:
terraform applySelama eksekusi kode, masukkan
yessaat diminta dan tekan tombol Enter. Tunggu hingga eksekusi selesai. Keluaran perintah berikut menunjukkan bahwa kode telah dijalankan:You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure. 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 Apply complete! Resources: 6 added, 0 changed, 0 destroyed.Verifikasi hasil
Jalankan perintah terraform show
Jalankan perintah berikut di direktori kerja untuk menanyakan detail sumber daya yang dibuat menggunakan Terraform:
terraform show
Masuk ke konsol ECS
Masuk ke konsol ECS. Di panel navigasi di sebelah kiri, pilih . Di bilah navigasi atas, pilih wilayah tempat instans ECS dibuat. Dalam contoh ini, pilih China (Beijing) untuk melihat instans ECS yang telah dibuat.

Referensi
Untuk informasi tentang studi kasus penggunaan Terraform, lihat Praktik Terbaik.
Untuk informasi tentang perintah Terraform umum, lihat Perintah Umum.
Terraform tersedia sebagai layanan terkelola di ROS. Anda dapat menerapkan template Terraform di konsol ROS. Untuk informasi lebih lanjut, lihat Buat Tumpukan Terraform.