天天看點

HashiCorp釋出了Terraform 0.8,包括互動式控制台、Vault和Nomad供應器

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寫成)。

本文轉自d1net(轉載)

繼續閱讀