Skip to Content

什麼是 Terraform Output?

藍色背景的數位環境中的多個抽象伺服器堆疊示意圖。

Terraform 是廣為接受的工具,可用來將基礎架構定義為程式碼。該工具的主要功能之一是 Terraform 輸出,它使用戶能夠從 Terraform 配置中提取並顯示有用的資訊。

本文深入探討 Terraform 輸出的重要性、其語法與使用方式,以及強化基礎架構編碼專案的最佳做法。

了解 Terraform 輸出

假設您正在管理複雜的基礎架構,並需要在各種資源或外部系統之間分享關鍵資料。Terraform 輸出功能可讓您做到這一點。此功能能輕鬆地從您的 Terraform 配置中擷取並顯示寶貴資訊,並可讓您在不同模組、工作空間和外部系統之間分享。

Terraform 輸出會揭露 Terraform 所管理資源的寶貴資訊。然後,Terraform 輸出指令列工具可讓您擷取並顯示這些輸出值,然後您的基礎架構或外部系統的其他元件便可使用。

擁有 Terraform 輸出功能有多項優勢,主要:

  • 資料分享:Terraform 輸出擅長於在 Terraform 配置和其他系統之間共享動態生成資源的屬性。假設您使用 Terraform 建立 EC2 執行個體。輸出區塊可以擷取公用 IP 位址,然後另一個 Terraform 設定可以用來設定安全群組規則,或是傳遞給外部設定管理工具。
  • 自動化:輸出可為相依資源提供動態值,進而實現自動化配置管理。例如,如果您使用 Terraform 佈建資料庫伺服器,且動態指派資料庫連接埠,輸出區塊即可擷取此連接埠。然後,此擷取的連接埠可以在另一個設定中使用,以從網頁應用程式建立資料庫連線。
  • 除錯與驗證:輸出不只是驗證資源狀態。在故障排除期間,您可以檢查輸出值,以找出可能造成相依流程問題的任何不一致或非預期的資源配置。
  • 一致性:輸出可促進跨環境的一致性。透過參考輸出而非硬式編碼值,您可以在開發、測試和生產環境中維持相同的配置邏輯。
  • 文件:輸出可作為一種文件形式,提供有關 Terraform 所提供基礎架構的清晰、簡潔資訊。這對需要了解系統的其他工程師或團隊來說,特別重要。

Terraform 輸出的語法和使用

Terraform 輸出定義於使用輸出區塊的組態檔案中。以下是語法細分:

output "<name>" {
  value = <expression>
}
  • <name>:這是輸出變數的使用者定義名稱。選擇能反映其所持有資料的描述性名稱。
  • <expression>:這是 Terraform 運算式,可計算您要曝光的值。它可以參考資源屬性、使用函數或執行計算。

輸出範例

以下 AWS 實例範例顯示如何將 Terraform 輸出顯示為不同的資料類型:

  • 字串輸出:

output "instance_id" {
  value = aws_instance.example.id
}
  • 數字輸出:

output "instance_count" {
  value = length(aws_instance.example)
}
  • 列出輸出:

output "instance_ips" {
  value = aws_instance.example[*].public_ip
}
  • 地圖輸出:

output "instance_tags" {
  value = {
    for instance in aws_instance.example :
    instance.id => instance.tags
  }
}

參考程式碼中的輸出

定義好之後,你就可以使用 Terraform 程式碼中的輸出名稱來參考輸出。以下是範例:

module "example_module" {
  source  = "./modules/example"
  # Reference the output from another module
  instance_id = var.other_module_name.instance_id
}

在本範例中,example_module 參考了名稱為 other_module_name 的另一個模組的 instance_id 輸出。如此可示範輸出如何促進模組之間的通訊與資料交換。

輸出變數 vs. 資料來源

Terraform 輸出和資料來源似乎一目了然,但它們在基礎架構即程式碼(IaC)工作流程中具有不同的用途。以下是釐清差異的細項:

Terraform 輸出變數

Terraform 輸出揭露了 Terraform 管理的資源資訊。輸出值來自 Terraform 配置中現有資源的屬性。輸出通常用於涉及以下情形的情況:

  • 在 Terraform 模組或配置之間共享資料
  • 將資訊傳遞至外部系統以進行配置管理或監控
  • 透過參考動態值而非硬式編碼資料來簡化配置邏輯

這類情況的範例包括擷取 EC2 執行個體的公用 IP 位址,並用來設定另一個 Terraform 模組的安全性群組規則。

Terraform 資料來源

資料來源從外部來源擷取資料。它與 API 或外掛程式互動,從雲端供應商、配置管理工具或其他外部系統擷取資訊。資料來源用於涉及以下情形的情況:

  • 存取 Terraform 本身無法管理的現有資源相關資訊
  • 使用外部資料動態配置 Terraform 資源
  • 將您的 IaC 與其他工具和平台整合

例如,在雲端供應商建立資源之前,使用資料來源擷取可用區域的清單。

簡而言之,使用輸出變數或資料來源的選擇取決於您需要的資料來源:

  • 如果資料來自 Terraform 配置中管理的資源,請使用輸出變數。
  • 如果資料位於外部系統或需要動態擷取,請使用資料來源。

使用 Terraform 輸出的最佳做法

使用 Terraform 輸出時,您應該考量下列最佳作法:

  • 使用描述性名稱:選擇清楚簡明的名稱,以反映輸出變數所暴露的資料。避免使用一般名稱,如 "output1" 或 "data"。請改用 "rds_instance_public_ip" 或 "webserver_security_group_id" 等名稱。這可改善您配置的可讀性與可維護性。
  • 採用一致的命名慣例:在您的 Terraform 代碼庫中維持一致的命名慣例。這可能涉及使用底線或連字號進行分離,並使命名方案在所有模組和配置中保持一致。
  • 群組相關輸出:以邏輯方式將相關輸出分組在一起。例如,如果您有多個與資料庫實例(IP 位址、連接埠、使用者名稱)相關的輸出,請將它們分組到設定檔中的單一標題下。這樣可以改善組織,並更容易找到特定資訊。
  • 使用評論:加入明確的評論,以說明每個輸出變數的目的和用途。這對於可能無法立即自行解釋的輸出,或其他模組或團隊使用時特別有用。
  • 避免不必要的輸出:避免為非真正需要的資料定義輸出。過多的輸出會讓輸出變得混亂,並使識別最相關的資訊更加困難。評估資料是否可直接在您的 Terraform 配置中使用,或替代方法是否更有效率。
  • 避免輸出機密:如果可能,請避免將敏感資料全部儲存在 Terraform 配置中。探索管理秘密的替代方法,例如運用 HashiCorp Vault 或環境變數。
  • 使用 Terraform 敏感屬性:如果無法避免將輸出用於秘密,請使用輸出區塊內的敏感屬性將其標示為敏感。如此會指示 terraform output 指令在顯示輸出時隱藏該值。

以下是新增敏感屬性的範例:

output "db_password" {
  value     = aws_db_instance.example.password
  sensitive = true
}

結論

Terraform 輸出使您能夠彌補靜態配置和動態基礎架構之間的差距。利用輸出功能,您可以簡化資料共享、自動化任務,並簡化驗證作業。

要充分發揮基礎架構的潛力,請考慮使用如 Portworx® 等 Pure Storage 解決方案,為您的 Terraform Kubernetes 部署啟用持久性儲存,以及 Pure Cloud Block Store 為您的雲端應用程式提供理想的儲存解決方案。

05/2025
CIOs under Pressure Nutanix, KubeVirt, and the New Virtualization Playbook
Pure Storage delivers unified, high-performance storage across cloud, on-prem, VMs, and containers—now integrated with Nutanix and KubeVirt.
白皮書
3 頁

瀏覽重要資訊與活動

精神領袖
創新競賽

儲存創新最前線的產業領導者最新深度資訊與觀點。

了解更多資訊
分析報告
規劃高度網路彈性的未來

了解協作策略,完整運用網路安全投資,並確保迅速回應與復原。

閱讀報告
資源
儲存設備的未來:AI 紀元的新準則

了解 AI 等新挑戰如何促成資料儲存需求轉型,需要嶄新思維與現代化做法才能成功。

下載電子書
資源
不再購買儲存,擁抱平台體驗

探索企業級儲存平台需求、元件與選用流程。

閱讀報告
聯繫我們
聯絡Pure訊息 標誌
聊天標誌
問題或建議

如對Pure的產品或認證,有任何的疑問或建議,歡迎與我們聯繫!

關鍵標誌
預約試用

預約現場示範,親眼看看 Pure 如何幫助您將資料轉化為強大的成果。 

聯絡我們:886-2-3725-7989

媒體:pr@purestorage.com

 

Pure Storage總部

34F, Taipei Nanshan Plaza,

No. 100, Songren Road,

Xinyi District,

Taipei City 110016

Taiwan (R.O.C.)

800-379-7873 (一般資訊)

info@purestorage.com

關閉
關閉關閉 X 標誌
您的瀏覽器已不受支援!

較舊版的瀏覽器通常存在安全風險。為讓您使用我們網站時得到最佳體驗,請更新為這些最新瀏覽器其中一個。