Terraform adalah alat open source Infrastructure as Code (IaC) yang memungkinkan pengembang mendefinisikan dan mengelola konfigurasi infrastruktur menggunakan bahasa deklaratif. Terraform menyediakan cara sederhana untuk membuat, mengubah, atau menghapus sumber daya Elastic Compute Service (ECS). Pendekatan ini mengurangi kompleksitas dan kesalahan operasi manual serta meningkatkan kemampuan pengelolaan dan pemeliharaan infrastruktur Anda. Topik ini menjelaskan cara menginstal dan mengonfigurasi Terraform serta menggunakannya untuk membuat instance ECS.
Fitur dasar Terraform
Terraform adalah alat otomatisasi dan orkestrasi infrastruktur TI yang memungkinkan Anda mengelola dan memelihara sumber daya TI melalui kode. Untuk informasi selengkapnya, lihat Apa itu Terraform?.
-
Antarmuka baris perintah (CLI) Terraform menyediakan cara sederhana untuk menyebarkan file konfigurasi ke Alibaba Cloud atau cloud lain yang didukung serta mengelola versinya. Anda dapat mendefinisikan infrastruktur Anda—seperti virtual machine, akun penyimpanan, dan antarmuka jaringan—dalam file konfigurasi yang menggambarkan topologi sumber daya cloud Anda.
-
Terraform mendukung infrastruktur baru melalui provider, sehingga memungkinkan Anda dengan mudah mendefinisikan, meninjau, dan menyebarkan infrastruktur cloud di Alibaba Cloud menggunakan bahasa templat sederhana.
-
Anda dapat menggunakan Terraform untuk membuat, mengubah, dan menghapus sumber daya dari berbagai layanan Alibaba Cloud.
Untuk informasi selengkapnya tentang integrasi Alibaba Cloud dan Terraform, lihat Alibaba Cloud Provider.
Menginstal Terraform
Cloud Shell
Alibaba Cloud Shell adalah produk operasi dan pemeliharaan (O&M) gratis yang telah dipra-instal dengan Terraform. Anda dapat menjalankan perintah Terraform langsung di Cloud Shell.
Pertama, pastikan Anda memiliki Akun Alibaba Cloud yang valid dengan izin yang diperlukan.
Selanjutnya, buka browser Anda dan kunjungi URL Cloud Shell: https://shell.alibabacloud.com.
Setelah login, jalankan perintah berikut.
terraform
Output menunjukkan bahwa Terraform telah terpasang di Cloud Shell dan siap digunakan.

Untuk informasi selengkapnya tentang cara menggunakan Cloud Shell, lihat Menggunakan Cloud Shell.
Instalasi manual
Gunakan paket yang telah dikompilasi
Buka situs resmi Terraform, lalu unduh paket ZIP untuk sistem operasi Anda.
Setelah pengunduhan selesai, ekstrak paket ke /usr/local/bin. Setelah penyalinan selesai, Anda dapat menghapus file lainnya tanpa memengaruhi cara Terraform berjalan.
Akhirnya, pastikan direktori Terraform telah ditambahkan ke variabel lingkungan `PATH`. Proses ini berbeda-beda tergantung pada sistem operasi Anda.
Windows
-
Buka Control Panel > System > Advanced system settings > Environment Variables.
-
Di bagian System variables, gulir ke bawah hingga menemukan PATH.
-
Klik Edit dan lakukan perubahan yang diinginkan.
-
Gunakan titik koma sebagai pemisah entri. Contoh: `c:\path;c:\path2`
-
Buka konsol baru agar perubahan diterapkan.
Untuk informasi selengkapnya, lihat Menentukan path global di Windows.
macOS atau Linux
Cetak konfigurasi PATH Anda.
echo $PATH
Pindahkan file biner Terraform ke salah satu lokasi dalam `PATH`. Perintah berikut mengasumsikan file biner berada di folder Downloads Anda dan `PATH` Anda mencakup `/usr/local/bin`. Sesuaikan direktori jika lokasi Anda berbeda.
mv ~/Downloads/terraform /usr/local/bin/
Untuk informasi selengkapnya, lihat:
Gunakan kode sumber
Jika Anda ingin mengompilasi file biner dari kode sumber, kloning repositori HashiCorp Terraform.
git clone https://github.com/hashicorp/terraform.git
Anda akan melihat informasi progres. Tunggu hingga proses selesai.

Setelah perintah dijalankan, direktori baru bernama `terraform` dibuat di direktori saat ini. Gunakan perintah `cd` untuk masuk ke direktori tersebut.
cd terraform
Kemudian, jalankan perintah instal untuk mengompilasi dan memindahkan hasilnya ke direktori `$GOPATH/bin/terraform`.
go install
Proses kompilasi sedang berlangsung. Tunggu hingga selesai sebelum melanjutkan.

Catatan: Jika muncul pesan "zsh: command not found: go", Anda perlu menginstal lingkungan Go.
Terakhir, pastikan direktori Terraform ada dalam `PATH` sistem Anda. Metode pengaturannya tergantung pada sistem operasi Anda.
macOS atau Linux
Periksa konfigurasi PATH Anda.
echo $PATH
Pindahkan file biner Terraform ke direktori dalam PATH Anda. Perintah berikut mengasumsikan file biner berada di folder Downloads Anda dan `PATH` Anda mencakup `/usr/local/bin`. Jika konfigurasi Anda berbeda, sesuaikan direktori dalam perintah.
mv ~/Downloads/terraform /usr/local/bin/
Untuk informasi selengkapnya, lihat:
Windows
-
Buka Control Panel > System > System Settings > Environment Variables.
-
Di bagian System variables, gulir ke bawah hingga menemukan variabel PATH.
-
Klik Edit dan lakukan perubahan yang diperlukan.
-
Gunakan titik koma untuk memisahkan entri, seperti `c:\path;c:\path2`.
-
Buka konsol baru agar perubahan diterapkan.
Untuk informasi selengkapnya, lihat Menentukan path global di Windows.
macOS Homebrew
Homebrew adalah alat instalasi paket populer untuk macOS. Anda dapat menggunakan Homebrew untuk menginstal Terraform dengan perintah sederhana.
Langkah 1. Instal tap HashiCorp, yaitu repositori untuk semua paket Homebrew HashiCorp.
brew tap hashicorp/tap
Langkah 2. Jalankan perintah `install` untuk menginstal Terraform.
brew install hashicorp/tap/terraform
Perintah `install` mengindeks dan menginstal versi terbaru. Untuk memperbarui ke versi terbaru di masa mendatang, jalankan perintah `upgrade`.
Untuk memperbarui ke versi terbaru Terraform, pertama-tama perbarui Homebrew.
brew update
Kemudian, jalankan perintah `upgrade` untuk memperbarui ke versi terbaru.
brew upgrade hashicorp/tap/terraform
Linux
Alibaba Cloud Linux
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform


Windows Chocolatey
Chocolatey adalah manajer paket populer untuk Windows. Anda dapat menggunakan Chocolatey untuk menginstal Terraform dengan menjalankan perintah sederhana.
choco install terraform
Autentikasi Terraform
Anda dapat mengautentikasi Terraform dengan menyimpan kredensial akses dalam variabel lingkungan. Saat menjalankan perintah Terraform, alat ini akan mencoba mengambil kredensial dari variabel tersebut jika tidak dideklarasikan secara eksplisit dalam templat konfigurasi. Bagian berikut menjelaskan cara mengatur variabel lingkungan tersebut.
Windows
-
Di desktop, klik kanan This PC dan pilih .
-
Di bagian System variables atau User variables, klik Create untuk membuat variabel lingkungan berikut.
Nama variabel
Deskripsi variabel
Nilai
ALICLOUD_ACCESS_KEY
ID AccessKey
yourAccessKeyID
ALICLOUD_SECRET_KEY
Rahasia AccessKey
yourAccessKeySecret
ALICLOUD_SECURITY_TOKEN (Opsional)
Jika Anda menggunakan kredensial Security Token Service (STS), Anda harus mengonfigurasi variabel ini.
yourSTSToken
Linux
Variabel lingkungan sementara yang dikonfigurasi dengan perintah `export` hanya berlaku untuk sesi saat ini. Setelah Anda keluar dari sesi, variabel tersebut menjadi tidak valid. Untuk membuatnya permanen, tambahkan perintah `export` ke file konfigurasi startup sistem operasi Anda.
# ID AccessKey
$ export ALICLOUD_ACCESS_KEY="<your AccessKey ID>"
# Rahasia AccessKey
$ export ALICLOUD_SECRET_KEY="<your AccessKey secret>"
# Jika Anda menggunakan kredensial STS, Anda harus mengonfigurasi security_token.
$ export ALICLOUD_SECURITY_TOKEN="<your access token>"
Setelah mengatur variabel lingkungan, Anda tidak perlu mendeklarasikan kredensial dalam blok provider. Cukup deklarasikan wilayah saja.
provider "alicloud" {
region = "cn-hangzhou"
}
Anda juga dapat mengonfigurasi wilayah menggunakan variabel lingkungan ALICLOUD_REGION. Jika wilayah tidak dideklarasikan secara eksplisit dan variabel lingkungan ini tidak diatur, nilai default-nya adalah cn-beijing.
Sumber daya yang didukung
Sumber daya adalah objek seperti instance ECS, virtual machine (VM), atau grup keamanan yang digunakan untuk mendefinisikan komponen infrastruktur.
Menggunakan Terraform untuk membuat dan mengelola sumber daya ECS
Bagian ini memberikan contoh cara membuat dan mengelola sumber daya ECS dengan Terraform.
-
Buat direktori kerja. Di dalam direktori tersebut, buat file konfigurasi bernama main.tf. Kode berikut membuat instance ECS beserta sumber daya VPC, grup keamanan, dan vSwitch yang diperlukan. Salin kode tersebut ke file main.tf.
# Mendefinisikan variabel "region" dengan nilai default "cn-beijing" untuk menentukan wilayah Alibaba Cloud. variable "region"{ default = "cn-beijing" } # Mengonfigurasi provider Alibaba Cloud untuk menggunakan wilayah yang ditentukan dalam variabel "region". provider "alicloud"{ region = var.region } # Mendefinisikan variabel string "instance_type" dengan nilai default "ecs.e-c1m1.large" untuk menentukan tipe instance ECS. variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # Menggunakan sumber data untuk mengkueri informasi zona. Memfilter hasil berdasarkan tipe instance, tipe pembuatan sumber daya (seperti VSwitch), dan kategori disk. data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_essd" } # Mendefinisikan variabel "vpc_cidr_block" dengan nilai default "172.16.0.0/16" untuk menentukan blok CIDR untuk VPC. variable "vpc_cidr_block" { default = "172.16.0.0/16" } # Mendefinisikan variabel "vsw_cidr_block" dengan nilai default "172.16.0.0/24" untuk menentukan blok CIDR untuk vSwitch. variable "vsw_cidr_block" { default = "172.16.0.0/24" } # Menghasilkan bilangan bulat acak antara 10000 dan 99999 untuk memastikan keunikan nama beberapa sumber daya. resource "random_integer" "default" { min = 10000 max = 99999 } # Membuat VPC bernama "vpc-test" dan menggunakan bilangan bulat acak untuk memastikan nama unik. resource "alicloud_vpc" "vpc" { vpc_name = "vpc-test_${random_integer.default.result}" cidr_block = var.vpc_cidr_block } # Membuat grup keamanan, menyertakan bilangan bulat acak dalam nama untuk memastikan keunikan, dan mengaitkannya dengan VPC yang dibuat di atas. resource "alicloud_security_group" "group" { security_group_name = "test_${random_integer.default.result}" # Nama bidang di sini telah diganti. vpc_id = alicloud_vpc.vpc.id } # Membuat aturan grup keamanan untuk mengizinkan semua trafik TCP inbound dan mengaitkannya dengan grup keamanan yang dibuat sebelumnya. resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" # Diubah di sini, nic_type diubah 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" } # Membuat vSwitch, menyertakan bilangan bulat acak dalam nama untuk memastikan keunikan, dan mengaitkannya dengan VPC dan zona. 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}" } # Membuat instance ECS. Mengatur beberapa parameter seperti zona, grup keamanan, dan tipe instans. Menggunakan bilangan bulat acak untuk memastikan nama instans unik. 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" # Ubah kata sandi sesuai kebutuhan Anda. } -
Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform.
terraform initOutput berikut menunjukkan bahwa Terraform berhasil 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 mengeksekusi kode.
terraform applySaat eksekusi, masukkan
yessaat diminta dan tekan Enter. Tunggu hingga perintah selesai. Jika output berikut muncul, kode berhasil dieksekusi.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 hasilnya
Jalankan perintah terraform show
Di direktori kerja, jalankan perintah berikut untuk mengkueri detail sumber daya yang dibuat oleh Terraform:
terraform show

Login ke konsol untuk melihat sumber daya
Login ke Konsol ECS. Pada panel navigasi di sebelah kiri, pilih . Pada pojok kiri atas, pilih wilayah. Dalam contoh ini, pilih China (Beijing) untuk melihat instance ECS yang dibuat.

Referensi
-
Untuk tutorial lainnya, lihat Tutorial Terraform.
-
Untuk informasi selengkapnya tentang perintah Terraform umum, lihat Perintah Umum.
-
Terraform tersedia sebagai layanan terkelola di ROS. Anda dapat menyebarkan templat Terraform di Konsol ROS. Untuk informasi selengkapnya, lihat Membuat tumpukan Terraform.