All Products
Search
Document Center

Elastic Compute Service:Referensi Terraform

Last Updated:Aug 21, 2026

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.

image

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

  1. Buka Control Panel > System > Advanced system settings > Environment Variables.

  2. Di bagian System variables, gulir ke bawah hingga menemukan PATH.

  3. Klik Edit dan lakukan perubahan yang diinginkan.

  4. Gunakan titik koma sebagai pemisah entri. Contoh: `c:\path;c:\path2`

  5. 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.

image

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.

image

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

  1. Buka Control Panel > System > System Settings > Environment Variables.

  2. Di bagian System variables, gulir ke bawah hingga menemukan variabel PATH.

  3. Klik Edit dan lakukan perubahan yang diperlukan.

  4. Gunakan titik koma untuk memisahkan entri, seperti `c:\path;c:\path2`.

  5. 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
Penting

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

image

image

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

  1. Di desktop, klik kanan This PC dan pilih Type > Advanced system settings > Environment Variables > System variables/User variables.

  2. 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

Penting

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

Catatan

Sumber daya adalah objek seperti instance ECS, virtual machine (VM), atau grup keamanan yang digunakan untuk mendefinisikan komponen infrastruktur.

Sumber daya

alicloud_auto_provisioning_group: Mengelola kelompok penyediaan otomatis ECS, yang menggunakan spot instans dan instans pay-as-you-go untuk menyebarkan kluster secara cepat.

alicloud_ecs_disk_attachment: Mengelola pemasangan disk data atau disk sistem ke instance ECS.

alicloud_ecs_activation: Mengelola kode aktivasi ECS. Anda dapat mengonfigurasi parameter seperti deskripsi, jumlah maksimum instance yang dapat didaftarkan, awalan nama instance default, rentang alamat IP host yang dapat menggunakan kode, dan periode validitas kode untuk mendaftarkan instans terkelola secara batch.

alicloud_ecs_auto_snapshot_policy: Mengelola kebijakan snapshot otomatis ECS. Anda dapat mengonfigurasi parameter seperti hari dalam seminggu dan waktu pembuatan snapshot otomatis, serta periode retensi snapshot. Sumber daya ini juga mendukung replikasi lintas wilayah dan enkripsi untuk snapshot.

alicloud_ecs_auto_snapshot_policy_attachment: Memasang kebijakan snapshot otomatis ke disk tertentu. Anda dapat menentukan ID kebijakan snapshot otomatis dan ID disk untuk menerapkan kebijakan yang telah ditentukan ke disk tersebut.

alicloud_ecs_capacity_reservation: Mengelola reservasi kapasitas di Alibaba Cloud. Anda dapat memesan sumber daya untuk tipe instans tertentu untuk memastikan Anda dapat meluncurkan jumlah instans tertentu saat dibutuhkan.

alicloud_ecs_command: Mengelola perintah pada instance ECS Alibaba Cloud. Anda dapat menentukan parameter seperti konten perintah yang dikodekan Base64, deskripsi, apakah akan mengaktifkan parameter kustom, nama perintah, periode timeout, dan jenis perintah untuk menjalankan skrip yang telah ditentukan.

alicloud_ecs_dedicated_host: Mengelola host khusus di Alibaba Cloud. Anda dapat mengonfigurasi parameter seperti tipe host, metode penagihan, siklus perpanjangan otomatis, hostname, dan deskripsi.

alicloud_ecs_dedicated_host_cluster: Mengelola kluster host khusus di Alibaba Cloud. Anda dapat mengonfigurasi parameter seperti nama kluster, deskripsi, zona, dan tag untuk mengelola dan mengorganisasi sumber daya host khusus secara terpusat.

alicloud_ecs_deployment_set: Mengelola set penyebaran di Alibaba Cloud. Anda dapat menentukan parameter seperti strategi penyebaran, nama set penyebaran, dan deskripsi untuk mengelola distribusi instance ECS guna mencapai tujuan tertentu, seperti ketersediaan tinggi atau latensi rendah.

alicloud_ecs_disk: Mengelola disk (disk data) di Alibaba Cloud. Anda dapat mengonfigurasi parameter seperti tipe disk, ukuran, status enkripsi, ID snapshot, tingkat kinerja, dan tag untuk memenuhi kebutuhan penyimpanan dalam berbagai skenario.

alicloud_ecs_disk_attachment: Mengelola pemasangan dan pelepasan disk pada instance ECS Alibaba Cloud. Anda dapat menentukan ID instans dan ID disk untuk mengaitkannya. Tersedia opsi untuk melepaskan disk bersama instans dan memasang disk sebagai disk sistem.

alicloud_ecs_elasticity_assurance: Mengelola jaminan elastisitas di Alibaba Cloud. Ini memastikan bahwa sejumlah kapasitas sumber daya komputasi dicadangkan untuk tipe instans tertentu di wilayah tertentu.

alicloud_ecs_hpc_cluster: Mengelola kluster komputasi kinerja tinggi (HPC) di Alibaba Cloud. Anda dapat menentukan nama dan deskripsi untuk mengonfigurasi informasi dasar kluster HPC.

alicloud_ecs_image_component: Mengelola komponen gambar di Alibaba Cloud. Anda dapat mendefinisikan konten, tipe, sistem operasi yang berlaku, dan metadata lainnya untuk komponen build atau uji. Komponen ini dapat digunakan kembali saat membuat gambar kustom.

alicloud_ecs_image_pipeline: Mengelola pipeline gambar di Alibaba Cloud. Anda dapat menentukan gambar dasar, konten build, tipe instans, dan konfigurasi lainnya untuk mengotomatiskan pembuatan dan pengelolaan gambar kustom.

alicloud_ecs_image_pipeline_execution: Menjalankan tugas pipeline gambar di Alibaba Cloud untuk membuat gambar kustom dari pipeline gambar yang telah ditentukan. Anda dapat menentukan ID pipeline gambar untuk memicu tugas pembuatan gambar dan memantau status serta hasil tugas tersebut.

alicloud_ecs_invocation: Mengelola dan menjalankan pemanggilan perintah pada instance ECS. Anda dapat menjalankan perintah tertentu pada satu atau beberapa instance ECS dan mengambil hasil eksekusinya.

alicloud_ecs_key_pair: Mengelola dan membuat pasangan kunci untuk instance ECS.

alicloud_ecs_key_pair_attachment: Memasang pasangan kunci ECS ke instance ECS tertentu.

alicloud_ecs_launch_template: Mengelola templat peluncuran ECS. Anda dapat menggunakan konfigurasi yang telah ditentukan untuk membuat dan menyebarkan instance ECS secara cepat, yang meningkatkan efisiensi dan memastikan konsistensi.

alicloud_ecs_network_interface: Mengelola antarmuka jaringan ECS. Anda dapat mengonfigurasi dan mengelola konektivitas jaringan untuk instans. Ini mendukung kebijakan alokasi IP privat yang fleksibel dan cocok untuk lingkungan jaringan kompleks serta desain ketersediaan tinggi.

alicloud_ecs_network_interface_attachment: Memasang Elastic Network Interface (ENI) ke instance ECS Alibaba Cloud. Ini memperluas kemampuan jaringan instans, memungkinkan Anda menambahkan beberapa alamat IP atau menerapkan konfigurasi jaringan yang lebih kompleks.

alicloud_ecs_network_interface_permission: Mengelola izin untuk antarmuka jaringan ECS.

alicloud_ecs_prefix_list: Mengelola daftar awalan dalam layanan ECS Alibaba Cloud.

alicloud_ecs_session_manager_status: Mengelola status Session Manager dalam layanan ECS Alibaba Cloud. Anda dapat mengaktifkan atau menonaktifkan fitur manajemen sesi untuk mengontrol akses dan pengelolaan instance ECS.

alicloud_ecs_snapshot: Mengelola snapshot disk di Alibaba Cloud. Anda dapat mencadangkan data dari disk tertentu untuk pemulihan atau pengarsipan di masa depan.

alicloud_ecs_snapshot_group: Mengelola snapshot untuk sekelompok disk di Alibaba Cloud.

alicloud_ecs_storage_capacity_unit: Mengelola unit kapasitas penyimpanan dalam layanan ECS Alibaba Cloud.

alicloud_image: Mengelola gambar kustom di Alibaba Cloud yang dibuat dari instance ECS yang ada.

alicloud_image_copy: Menyalin gambar kustom dari satu wilayah ke wilayah lain.

alicloud_image_export: Mengekspor gambar kustom ke bucket Object Storage Service (OSS) di wilayah yang sama dengan gambar kustom tersebut.

alicloud_image_import: Mengelola impor gambar ke ECS.

alicloud_image_share_permission: Mengelola izin berbagi gambar.

alicloud_instance: Mengelola sumber daya instance ECS.

alicloud_ecs_key_pair: Mengelola sumber daya pasangan kunci ECS.

alicloud_ecs_key_pair_attachment: Memasang pasangan kunci ke beberapa instance ECS.

alicloud_ecs_launch_template: Mengelola sumber daya templat peluncuran ECS.

alicloud_ecs_network_interface: Mengelola sumber daya antarmuka jaringan ECS.

alicloud_ecs_network_interface_attachment: Mengelola sumber daya pemasangan antarmuka jaringan ECS.

alicloud_ram_role_attachment: Memasang peran Resource Access Management (RAM) instans ke beberapa instance ECS.

alicloud_reserved_instance: Mengelola sumber daya Reserved Instance.

alicloud_security_group: Mengelola sumber daya grup keamanan ECS.

alicloud_security_group_rule: Mengelola sumber daya aturan grup keamanan.

alicloud_ecs_snapshot: Mengelola sumber daya snapshot ECS.

alicloud_ecs_auto_snapshot_policy: Mengelola sumber daya kebijakan snapshot otomatis ECS.

Menggunakan Terraform untuk membuat dan mengelola sumber daya ECS

Bagian ini memberikan contoh cara membuat dan mengelola sumber daya ECS dengan Terraform.

  1. 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.
    }
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan runtime Terraform.

    terraform init

    Output 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.
  3. Jalankan perintah berikut untuk mengeksekusi kode.

    terraform apply

    Saat eksekusi, masukkan yes saat 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.

  4. Verifikasi hasilnya

Jalankan perintah terraform show

Di direktori kerja, jalankan perintah berikut untuk mengkueri detail sumber daya yang dibuat oleh Terraform:

terraform show

image

Login ke konsol untuk melihat sumber daya

Login ke Konsol ECS. Pada panel navigasi di sebelah kiri, pilih Instances & Images > Instance. Pada pojok kiri atas, pilih wilayah. Dalam contoh ini, pilih China (Beijing) untuk melihat instance ECS yang dibuat.

image

Referensi