Terraform 新手村指南,萌新必讀!

基礎設施即代碼(IaC)是指使用代碼和軟件開發技術來配置和管理基礎設施的實踐。IaC 背後的邏輯是儘量消除手動配置基礎設施和資源的需求,比如服務器、負載均衡以及數據庫等。由於基礎設施是整個軟件開發流程的一個組成部分,並且與應用交付更緊密地聯繫在一起,因此讓基礎設施的更改更容易交付十分重要。

使用代碼來定義和管理基礎設施及其配置,可以讓開發者採用版本控制、測試和自動化部署等技術,這有助於避免各種應用問題產生,比如性能瓶頸、功能故障等。

Terraform 是一個被廣泛使用的開源 IaC 工具,用戶可以以聲明式的方式來管理基礎設施。藉助 Terraform, 用戶可以使用簡單的配置語言管理多個不同雲廠商的雲資源,比如 AWS、Azure、GCP 等。

本文將會介紹 Terraform 的基礎,包括架構、工作原理、工作流程及最佳實踐等方面的內容。

Terraform 架構

Terraform 是一款基於插件的工具,因此其有一個核心應用 Terraform,和上百個插件。核心應用提供了一個統一的層來管理 IaC 代碼,並且它還會負責安裝所需的插件,調用它們、管理狀態等。另一方面,插件可以與基礎設施平臺和應用通信,如 AWS、GCP、Grafana、Jenkins、GitLab 等。其中一些插件由 Hashicorp 團隊維護,另外的那些則是由第三方維護。每個人都可以編寫併發布自己的插件,訪問下方網站可以獲取插件庫:

https://registry.terraform.io/

圖片

Terraform 插件由兩大主要類型:Provider 和 Provisioner。Provider 是通過 API 負責與實際基礎設施或應用進行連接,並創建、修改和刪除對象和資源。Provisioner 是負責連接已經配置好的基礎設施並對其進行更改。例如,你可以使用 AWS Provider 來配置一個 EC2 實例,並在配置完成後遠程執行 Provisioner 來在實例上執行某些命令行。(需要注意的是,Provisioner 通常不是最佳實踐)

Terraform 核心概念

本節介紹一些 Terraform 中使用的核心概念 / 術語:

Terraform 生命週期

Terraform 的生命週期由 init、plan、applydestroy ,4 個階段構成。

Terraform 的工作原理

Terraform 可以讓用戶通過配置文件定義和管理整個基礎設施和版本控制。這主要由 Terraform 架構中的兩個主要組件來實現這一目標:Core 和 Provider。

Terraform Core 如何工作

要完成工作,Terraform core 需要使用 2 個輸入源。第一個源將用戶配置輸入到 Terraform,並定義需要創建或配置什麼資源。第二個輸入源包括向 Terraform 提供的關於當前基礎設施設置情況的數據。

Terraform 會獲取這些輸入信息並決定下一步應該如何進行。它採用用戶指定的期望狀態,並將其與當前狀態進行對比,進而對架構進行配置以消除兩種狀態之間的差距。Terraform core 本質上是要計算出需要創建、更新或刪除的內容,以便全面配置基礎設施。

Terraform Provider 如何工作

第二個讓 Terraform 運行的關鍵組件是 provider。常見的是雲廠商,如 AWS 或 Azure,但其他基礎設施或平臺服務工具也可以。例如,Kubernetes 也是 Terraform 用的一個 provider。

Terraform 有上百個不同技術的 Provider 可供用戶訪問。例如,如果你正在使用 AWS,Terraform 可以訪問 EC2 實例和在這一技術棧內的其他資源。接着,用戶可以在不同層級上創建基礎設施,比如在 Azure 上構建 Kubernetes。

這就是 Terraform 的工作原理:使用 Core 和 Provider 功能來快速完成應用程序和基礎設施的設置,並且僅僅使用代碼即可。

Terraform 工作流程

Terraform 的工作流程由以下 3 個步驟組成:

Step 1:寫

在 Terraform 工作流程的第一步中,用戶需要使用 Haschicorp Configuration Language (HCL)來將基礎設施資源聲明爲代碼。

Step 2:審覈

接下來,Terraform 會展示其計劃,它會根據用戶設置的期望狀態和現有資源的當前狀態進行比較,來增加或移除資源。

Step 3:應用

最終,接受計劃的更改,來增加或刪除任何基礎設施資源。然後基礎設施將在 Terraform 的幫助下進行全面部署。

Terraform 最佳實踐

總   結

Terraform 是 IaC 領域備受開發者青睞的開源工具,本文介紹了 Terraform 的基礎,包括其工作流程、工作原理、核心概念以及架構解釋,希望可以幫助你初步瞭解這個強大的工具。除了 Terraform 本身擁有強大的功能之外,還有非常完善的配套文檔和教程,幫助開發者快速上手使用。 

教程地址:

https://developer.hashicorp.com/terraform/tutorials

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/lJWkLKDR3vGlc9LAG3ZXzQ