全部產品
Search
文件中心

Terraform:Terraform Output 介紹

更新時間:Jul 31, 2025

前面的內容中,我們已經介紹了資源、依賴關係和變數,這節我們將探索輸出值(Output)。

什麼是輸出值

輸出值類似於常見的程式設計語言中的傳回值。通過輸出值,您可以在命令列的輸出中查看您建立的基礎設施資源的資訊。

輸出值有多個用途。最常見的情境是在 apply 之後在作業記錄中列印出根模組資源的屬性,比如,ECS 執行個體的大多數詳細資料是在 apply 時計算的,因此只能在建立後進行推斷。

除此之外,輸出值還用於將一個資源產生的資訊傳遞給另一個資源。例如,你可以將 ECS 執行個體的特定屬性的值(如IP地址)提取到另一個需要該資訊的資源(如安全性群組規則)中。

輸出值的文法

輸出值用 output 塊聲明。你可以在 Terraform 設定檔的任何地方聲明輸出值,但推薦的最佳實務是將它們聲明在名為 outputs.tf 的單獨檔案中。

關鍵字 'output' 旁邊的標籤為輸出值的名稱。和變數名稱一樣,輸出值的名稱在當前模組中必須是唯一的。output塊內可以包含的參數有以下幾種:

  1. value

    這是一個必需參數,向模組的使用者返回一個值

  2. description

    這是一個選擇性參數,用於提供輸出目的和預期值的說明。description 常用於文檔描述。

  3. sensitive

    這是另一個選擇性參數,用於掩蓋資源屬性的值。當需要隱藏一些需要保密的資源屬性(如密碼資訊、Access Secret Key)時,此參數很有用。

在如下的例子中,我們為名為 my-vpc 的對象聲明了一個輸出值 vpc_id:

# 建立 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
}

運行 terraform apply 成功之後,my-vpc 的 ID 將顯示在螢幕上:

截屏2024-07-14 19.56.30.png

除此之外,對於已經建立成功的資源,你可以通過運行 terraform output 命令隨時查詢專案中使用的所有輸出值。

輸出值的最佳實務

當聲明輸出值的時候,我們提供以下幾條建議:

  1. 僅輸出有用的資訊

    僅輸出有用的資訊,例如計算出的資訊,避免輸出只是重複的變數值或提供的已知資訊的值。例如,對於網路資源,以下計算屬性是有用的:

    1. id,它是資源的標識符

    2. router_id,它是 VPC 建立成功後系統自動建立的路由器的標識符

    3. route_table_id,它是 VPC 建立成功後系統自動建立的路由表的標識符

  2. 和變數一樣,提供有意義的名稱和描述

  3. 將程式碼群組織起來,將所有輸出值包含在名為outputs.tf的檔案中

  4. 標記敏感輸出

    不要嘗試手動加密敏感值,而是依賴於內建的敏感狀態管理來支援。將敏感值設定到輸出值時,要確保這些值被標記為敏感。當一個值被標記為敏感時,該資料將在 terraform plan 或 terraform apply 命令的輸出中將被掩蓋。