All Products
Search
Document Center

Terraform:Output Terraform

Last Updated:Jun 03, 2026

Apa itu output

Output mirip dengan nilai kembali (return value) dalam bahasa pemrograman. Output memungkinkan Anda mengekspos atribut infrastruktur setelah menjalankan terraform apply, sehingga Anda dapat memeriksanya, meneruskannya antar modul, atau menggunakannya sebagai masukan untuk alat lain.

Kasus penggunaan umum:

  • Tampilkan atribut resource — tampilkan nilai yang dihitung (seperti ID Instance ECS atau alamat IP) di CLI setelah terraform apply

  • Teruskan data antar resource — ekstrak atribut dari satu resource dan rujuk di resource lain, misalnya menggunakan alamat IP VPC dalam aturan security group

  • Bagikan data antar modul — ekspos nilai dari modul anak agar modul induk dapat merujuknya

  • Integrasikan dengan alat eksternal — salurkan nilai output ke skrip atau pipeline CI/CD menggunakan terraform output

Sintaksis output

Deklarasikan output dalam blok output. Anda dapat meletakkan blok output di mana saja dalam file konfigurasi Terraform Anda. Namun, kami menyarankan meletakkannya dalam file terpisah bernama outputs.tf agar konfigurasi lebih mudah dinavigasi.

Label setelah kata kunci output adalah nama output. Nama output harus unik dalam modul tersebut. Blok output menerima argumen berikut:

  1. value

    (Wajib) Nilai yang dikembalikan kepada pengguna modul.

  2. description

    (Opsional) Deskripsi yang dapat dibaca manusia mengenai tujuan output tersebut. Terraform menggunakan deskripsi ini untuk menghasilkan dokumentasi tentang modul.

  3. sensitive

    (Opsional) Nilai Boolean yang menunjukkan apakah output bersifat sensitif. Jika true, Terraform menyensor nilai tersebut dari output CLI untuk mencegah kebocoran data rahasia, seperti password atau Secret AccessKey.

Contoh berikut mendeklarasikan output bernama vpc_id untuk resource bernama my-vpc:

# Create a VPC
resource "alicloud_vpc" "my-vpc" {
  vpc_name   = "tf-vpc"
  cidr_block = "10.0.0.0/16"
}
output "vpc_id" {
  value = alicloud_vpc.my-vpc.id
}

Setelah terraform apply berhasil, ID VPC akan muncul dalam output CLI:

alicloud_vpc.my-vpc: Creating...
alicloud_vpc.my-vpc: Creation complete after 7s [id=vpc-bp1gcq59rsakmwx1apmhn]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
vpc_id = "vpc-bp1gcq59rsakmwx1apmhn"

Kueri output dengan perintah terraform output

Untuk resource yang sudah dibuat, jalankan terraform output kapan saja untuk melihat semua nilai output:

$ terraform output
vpc_id = "vpc-bp1gcq59rsakmwx1apmhn"

Untuk mengambil satu nilai sebagai string mentah (cocok untuk skrip shell):

$ terraform output -raw vpc_id
vpc-bp1gcq59rsakmwx1apmhn

Untuk mengambil semua output dalam format JSON (cocok untuk pemrosesan terprogram):

$ terraform output -json
{
  "vpc_id": {
    "sensitive": false,
    "type": "string",
    "value": "vpc-bp1gcq59rsakmwx1apmhn"
  }
}
Peringatan

Flag -raw dan -json menampilkan nilai teks biasa dari output sensitif. Jangan gunakan flag ini dalam konteks di mana output dicatat atau disimpan.

Akses output dari modul anak

Modul induk mengakses output modul anak menggunakan module.<MODULE_NAME>.<OUTPUT_NAME>:

module "network" {
  source = "./modules/network"
}

resource "alicloud_security_group_rule" "allow_vpc" {
  cidr_ip = module.network.vpc_cidr_block
}

Modul anak (./modules/network) harus mendeklarasikan output tersebut:

output "vpc_cidr_block" {
  description = "CIDR block of the VPC"
  value       = alicloud_vpc.main.cidr_block
}

Praktik terbaik untuk output

  1. Hanya output informasi yang berguna

    Ekspos atribut yang dihitung, bukan nilai statis yang hanya mengulang variabel. Untuk resource jaringan, output yang berguna mencakup:

    1. id: identifier dari resource tersebut.

    2. router_id: identifier dari router yang secara otomatis dibuat untuk VPC.

    3. route_table_id: identifier dari tabel rute yang secara otomatis dibuat untuk VPC.

  2. Gunakan nama dan deskripsi yang bermakna — ikuti konvensi yang sama seperti nama variabel dan sertakan argumen description untuk mendokumentasikan maksud output tersebut.

  3. Letakkan semua output dalam outputs.tf — file khusus ini mempermudah peninjauan terhadap apa saja yang diekspos oleh konfigurasi Anda.

  4. Tandai output sensitif

    Gunakan fitur bawaan Terraform sensitive = true daripada mengenkripsi nilai secara manual. Saat output ditandai sebagai sensitif, Terraform menyensor nilainya dari output terraform plan dan terraform apply.