HashiCorp發布了0.8版的Terraform。Terraform是一個開源工具,它能通過亞馬遜網頁服務、VMware vSphere和UltraDNS等基礎設施供應商構建、組合和發布可編程基礎設施。主要的新功能包括交互式控制臺、條件值、HashiCorp Vault和Nomad供應器等。
Terraform 0.8版除原有的terraform控制臺之外,還新增加了一個交互式控制臺,它可以用于嘗試插值,以及檢查基礎設施。HashiCorp的博客表示,對于不熟悉Terraform的開發者來說,控制臺是一個非常棒的附加學習資源,因為插值(任何你想放入TerraForm配置屬性的東西)可以被輸入控制臺,然后就可以看到它產生的輸出了。控制臺目前只讀,這是為了防止任何對基礎設施或狀態的不小心誤改。
插值現在支持基本的條件判斷,它支持對值進行條件賦值,比如在一個資源的元參數里。當與資源的“count”參數結合起來時,這樣就可以支持對資源的條件性包含,比如 ‘count = “${var.env == “production” ? 1 : 0}”。這個例子的意思是,通過將變量“env”設置成非“production”的某個值,那么相關的資源數量就會是0,因此它不會被創建。Terraform支持以下邏輯運算符: 相等判斷==和!=,數字比較>、<、>=和<=,還有布爾運算符&&、||和!(一元運算)。
在Terraform0.8版本里,現在也可以指定對Terraform版本的限制了,方法是使用Terraform配置元參數“required_version”,比如“required_version >=0.8,<0.9”。HashiCorp的博客指出,添加這個功能的目的在于避免Terraform程序版本和Terraform配置之間的不一致,并且可以被用于某些場景,舉例來說,某些缺陷已經在較新的版本中修復了,但是卻有可能對現有的基礎設施造成問題,那么加上這個參數就可以限制對版本的要求,從而避免意外的損壞。如果Terraform版本不能與要求的版本相匹配,Terraform將在很早的階段就輸出錯誤,通知用戶他們必須改變他們的Terraform版本,才能夠與配置一起正常工作。
創建和更改基礎設施通常需要若干不同的憑據,例如API訪問令牌和數據庫管理密碼等,而且存儲這些憑據的最好的地方就是一個安全的秘密管理工具。Terraform Vault供應器允許Terraform 去讀取Vault、寫入Vault和配置Vault,Vault就是HashiCorp的管理秘密的工具。
Terraform的文檔中聲明,Vault供應器目前只支持一般性的秘密的后臺,但這已經可以滿足兩種常見的初級用例了:(1)配置和填充Vault:Vault管理員可以使用Terraform去配置Vault,再用秘密填充它;(2)在Terraform配置中使用Vault憑證:憑證可以從Vault中獲取,這意味著為了獲得訪問其他供應商的臨時租約,運維人員或者運行Terraform的系統只需要訪問一個賦予了適當權限的Vault令牌即可。
還有一點需要特別注意的是,Terraform的Vault供應器文檔中提到,在Terraform中與Vault交互時,任何你讀或寫的秘密都會被保存在Terraform的狀態文件中,同時還會保存在任意生成的計劃文件中。所以對于任意讀寫Vault秘密的Terraform模塊來說,這些文件都應被視為非常敏感的文件,因此需要被保護起來。此外,對于通過配置文件提供的秘密來說,目前Terraform沒有提供任何編輯或保護它們的機制,因此相應地,對于選擇使用Terraform去填充Vault秘密的團隊來說,他們應該仔細閱讀每個資源的文檔的相關章節,了解這些秘密是如何被保存到狀態中的,并且仔細考慮這樣的做法是否滿足他們公司的安全策略要求。
新的Nomad供應器允許Terraform為HashiCorp Nomad分布式調度器創建作業,它必須作為基礎設施創建過程的一部分運行。這里的用例主要是系統作業或者批量初始化作業。HashiCorp博客表示,這一新功能并不是在試圖完全取代Nomad的運行,但Terraform可以用來引導一個集群以及相關的應用。
Terraform 0.8版本也有幾點與Terraform 0.7不能向后兼容的地方,HashiCorp團隊建議開發者們認真查看升級指南。升級指南詳細描述了版本之間不兼容的細節,以及在升級到0.8版本時所需要考慮的細節。
要了解更多關于HashiCorp Terraform v0.8發布的細節,可以查看HashiCorp的博客。在HashiCorp網站上可以下載Terraform二進制文件,并且在項目的GitHub庫可以找到Terraform的代碼(主要用Golang寫成)。
閱讀英文原文:HashiCorp Release Terraform 0.8, Including an Interactive Console, and Vault and Nomad Providers