站長資訊網
        最全最豐富的資訊網站

        Terraform安裝及簡單介紹

        在 DevOps 實踐中,基礎設施即代碼如何落地是一個繞不開的話題。像 Chef,Puppet 等成熟的配置管理工具,都能夠滿足一定程度的需求,但有沒有更友好的工具能夠滿足我們絕大多數的需求?筆者認為 Terraform 是一個很有潛力的工具,目前各大云平臺也都支持的不錯,尤其是使用起來簡單明了。本文會簡單的介紹一下 Terraform 相關的概念,然后通過一個小 demo 帶大家一起進入 Terraform 的世界。說明:本文的演示環境為 Ubuntu 16.04。

        Terraform 是什么?

        Terraform 是一種安全有效地構建、更改和版本控制基礎設施的工具(基礎架構自動化的編排工具)。它的目標是 “Write, Plan, and create Infrastructure as Code”, 基礎架構即代碼。Terraform 幾乎可以支持所有市面上能見到的云服務。具體的說就是可以用代碼來管理維護 IT 資源,把之前需要手動操作的一部分任務通過程序來自動化的完成,這樣的做的結果非常明顯:高效、不易出錯。

        Terraform安裝及簡單介紹

        Terraform 提供了對資源和提供者的靈活抽象。該模型允許表示從物理硬件、虛擬機和容器到電子郵件和 DNS 提供者的所有內容。由于這種靈活性,Terraform 可以用來解決許多不同的問題。這意味著有許多現有的工具與Terraform 的功能重疊。但是需要注意的是,Terraform 與其他系統并不相互排斥。它可以用于管理小到單個應用程序或達到整個數據中心的不同對象。

        Terraform 使用配置文件描述管理的組件(小到單個應用程序,達到整個數據中心)。Terraform 生成一個執行計劃,描述它將做什么來達到所需的狀態,然后執行它來構建所描述的基礎結構。隨著配置的變化,Terraform 能夠確定發生了什么變化,并創建可應用的增量執行計劃。

        Terraform 是用 Go 語言開發的開源項目,你可以在 github 上訪問到它的源代碼。

        Terraform 核心功能

        • 基礎架構即代碼(Infrastructure as Code)
        • 執行計劃(Execution Plans)
        • 資源圖(Resource Graph)
        • 自動化變更(Change Automation)

        基礎架構即代碼(Infrastructure as Code)
        使用高級配置語法來描述基礎架構,這樣就可以對數據中心的藍圖進行版本控制,就像對待其他代碼一樣對待它。

        執行計劃(Execution Plans)
        Terraform 有一個 plan 步驟,它生成一個執行計劃。執行計劃顯示了當執行 apply 命令時 Terraform 將做什么。通過 plan 進行提前檢查,可以使 Terraform 操作真正的基礎結構時避免意外。

        資源圖(Resource Graph)
        Terraform 構建的所有資源的圖表,它能夠并行地創建和修改任何沒有相互依賴的資源。因此,Terraform 可以高效地構建基礎設施,操作人員也可以通過圖表深入地解其基礎設施中的依賴關系。

        自動化變更(Change Automation)
        把復雜的變更集應用到基礎設施中,而無需人工交互。通過前面提到的執行計劃和資源圖,我們可以確切地知道 Terraform 將會改變什么,以什么順序改變,從而避免許多可能的人為錯誤。

        安裝 Terraform

        Terraform 的安裝非常簡單,直接把官方提供的二進制可執行文件保存到本地就可以了。比如筆者習慣性的把它保存到 /usr/local/bin/ 目錄下,當然這個目錄會被添加到 PATH 環境變量中。完成后檢查一下版本號:

        Terraform安裝及簡單介紹

        通過 -h 選項我們可以看到 terraform 支持的所有命令:

        Terraform安裝及簡單介紹

        在 Azure 上創建一個 Resource Group

        要讓 Terraform 訪問 Azure 訂閱中的資源,需要先創建 Azure service principal,Azure service principa 允許你的 Terraform 腳本在 Azure 訂閱中配置資源。請參考這里創建 Azure service principal。

        配置 Terraform 環境變量
        若要配置 Terraform 使用 Azure service principal,需要設置以下環境變量:

        • ARM_SUBSCRIPTION_ID
        • ARM_CLIENT_ID
        • ARM_CLIENT_SECRET
        • ARM_TENANT_ID
        • ARM_ENVIRONMENT

        這些環境變量的值都可以從前面創建 Azure service principal 的過程中獲得。方便起見,我們把設置這些環境變量的步驟可以寫到腳本文件 azureEnv.sh 中:

        #!/bin/sh echo "Setting environment variables for Terraform"  export ARM_SUBSCRIPTION_ID=your_subscription_id  export ARM_CLIENT_ID=your_appId  export ARM_CLIENT_SECRET=your_password  export ARM_TENANT_ID=your_tenant_id  # Not needed for public, required for usgovernment, german, china  export ARM_ENVIRONMENT=public

        這樣在執行 Terraform 命令前通過 source 命令執行該腳本就可以了!

        創建 Terraform 配置文件
        為了在 Azure 上創建一個 Resource Group,我們創建名稱為 createrg.tf 的配置文件,并編輯內容如下:

        provider "azurerm" {  }  resource "azurerm_resource_group" "rg" {          name = "NickResourceGroup"          location = "eastasia"  }

        用 init 命令用來初始化工作目錄
        把當前目錄切換到 createrg.tf 文件所在的目錄,然后執行 init 命令:

        $ terraform init 

        Terraform安裝及簡單介紹

        其實就是把 createrg.tf 文件中指定的驅動程序安裝到當前目錄下的 .terraform 目錄中:

        Terraform安裝及簡單介紹

        通過 plan 命令檢查配置文件
        plan 命令會檢查配置文件并生成執行計劃,如果發現配置文件中有錯誤會直接報錯:

        $ . azureEnv.sh  $ terraform plan

        Terraform安裝及簡單介紹

        通過 plan 命令的輸出,我們可以清楚的看到即將在目標環境中執行的任務。

        使用 graph 命令生成可視化的圖表
        其實 graph 命令只能生成相關圖表的數據(dot 格式的數據),我們通過 dot 命令來生成可視化的圖表,先通過下面???命令安裝 dot 程序:

        $ sudo apt install graphviz

        然后生成一個圖表:

        $ terraform graph | dot -Tsvg > graph.svg

        Terraform安裝及簡單介紹

        上圖描述了我們通過 azurerm 驅動創建了一個 Resource Group。

        使用 apply 命令完成部署操作
        在使用 apply 命令執行實際的部署時,默認會先執行 plan 命令并進入交互模式等待用戶確認操作,我們已經執行過 plan 命令了,所以可以使用 -auto-approve 選項跳過這些步驟直接執行部署操作:

        $ terraform apply -auto-approve

        Terraform安裝及簡單介紹

        到 Azure 站點上檢查一下,發現名稱為 NickResourceGroup 的 Resource Group 已經創建成功了。

        總結

        Terraform 支持的平臺非常多,像 AWS,Azure 等大廠自然是不用說了,一些小的廠商也可以通過提供 provider 支持 Terraform,從而讓整個生態變得非常活躍。如果大家想在 DevOps 實踐中引入基礎設施即代碼,無論是面對的是公有云還是私有云,相信 Terraform 都不會讓你失望。

        參考:
        Introduction to Terraform
        Terraform github
        安裝和配置 Terraform

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国内精品久久人妻互换| 国内精品手机在线观看视频| 国产亚洲精品a在线无码| 国产日韩久久久精品影院首页| avtt天堂网久久精品| 欧美精品福利在线视频 | 久久国产亚洲精品麻豆| 伊人精品久久久久7777| 国产精品亚洲高清一区二区 | 91精品国产福利在线观看麻豆| 精品深夜AV无码一区二区| 无码人妻精品一区二区蜜桃AV| 国产乱人伦偷精品视频免观看| 九九99精品久久久久久| 91精品国产乱码久久久久久 | 中文成人无字幕乱码精品区| 精品欧美一区二区三区久久久| 在线精品国产一区二区| 国产精品亚洲精品| 2021久久精品国产99国产精品| 麻豆成人久久精品二区三区免费| 亚洲欧美日韩另类精品一区二区三区 | 6一12呦女精品| 欧美精品亚洲精品日韩传电影| 日韩精品无码久久一区二区三| 国产精品推荐天天看天天爽| 99久久国产综合精品五月天喷水| 久久99热国产这有精品| 国产精品久久久久影院嫩草| 精品精品国产自在久久高清 | 国内精品伊人久久久久影院对白 | 国产成人精品久久亚洲高清不卡 | 精品久久久久久久| 99精品在线观看| 99精品久久精品一区二区| 98视频精品全部国产| 国产精品55夜色66夜色| 久久成人国产精品二三区| 久久亚洲国产精品一区二区| 亚洲精品综合一二三区在线| 99精品在线免费|