使用 Yeoman 在 Azure 中建立 Terraform 基底範本

Terraform 可讓您定義、預覽和部署雲端基礎結構。 使用 Terraform 時,您可以使用 HCL 語法來建立設定檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立設定檔之後,您可以建立執行計畫,讓您先預覽基礎結構變更,之後再部署。 驗證變更之後,您可以套用執行計畫來部署基礎結構。

在本文中,您將瞭解如何使用 TerraformYeoman 的組合。 Terraform 是用來在 Azure 上建立基礎結構的工具。 Yeoman 可讓您輕鬆地建立 Terraform 模組。

在本文中,您將瞭解如何執行下列工作:

  • 使用 Yeoman 模組產生器建立基底 Terraform 範本。
  • 使用兩種不同的方法測試 Terraform 範本。
  • 使用 Docker 檔案執行 Terraform 模組。
  • 在 Azure Cloud Shell 中以原生方式執行 Terraform 模組。

1.設定您的環境

  • Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

2.建立 Yeoman 產生的模組目錄

Yeoman 樣本會在當前目錄中產生檔案。 基於這個理由,您必須建立目錄。

此空白目錄必須放在 $GOPATH/src 之下。 如需此路徑的詳細資訊,請參閱設定 GOPATH 一文

  1. 流覽至要從中建立新目錄的父目錄。

  2. 執行下列命令來取代佔位元。 在此範例中,會使用 的 GeneratorDocSample 目錄名稱。

    mkdir <new-directory-name>
    

    mkdir

  3. 瀏覽至新的目錄:

    cd <new-directory-name>
    

    Navigate to your new directory

3.建立基底模組範本

  1. 執行以下命令:

    yo az-terra-module
    
  2. 請依照畫面上的指示提供下列資訊:

    • Terraform 模組項目名稱 - 用於 範例的值 doc-sample-module

      Project name

    • 您要包含 Docker 映像檔嗎? - 輸入 y。 如果您輸入 n,則產生的模組程式代碼僅支援在原生模式中執行。

      Include Docker image file?

  3. 列出目錄內容,以檢視所建立的結果檔案:

    ls
    

    List created files

4.檢閱產生的模組程序代碼

  1. 啟動 Visual Studio Code

  2. 從功能表欄選取 [ 檔案 > 開啟資料夾 ],然後選取您建立的資料夾。

    Visual Studio Code

下列檔案是由 Yeoman 模組產生器所建立:

  • main.tf - 定義名為 random-shuffle的模組。 輸入是 string_list。 輸出是排列的計數。
  • variables.tf - 定義模組所使用的輸入和輸出變數。
  • outputs.tf - 定義模組輸出的內容。 在這裡,它是 所 random_shuffle傳回的值,這是內建的 Terraform 模組。
  • Rakefile - 定義建置步驟。 這些步驟包括:
    • build - 驗證 main.tf 檔案的格式。
    • unit - 產生的模組基本架構不包含單元測試的程序代碼。 如果您想要指定單元測試案例,您會在這裡新增該程序代碼。
    • e2e - 執行模組的端對端測試。
  • test
    • 測試案例是以 Go 撰寫。
    • 測試中的所有程式代碼都是端對端測試。
    • 端對端測試會嘗試布建 下 fixture定義的所有專案。 檔案中 template_output.go 的結果會與預先定義的預期值進行比較。
    • Gopkg.lockGopkg.toml:定義相依性。

如需適用於 Azure https://github.com/Azure/generator-az-terra-module的 Yeoman 產生器詳細資訊,請參閱 Terratest 檔

5.使用 Docker 檔案測試 Terraform 模組

本節說明如何使用 Docker 檔案測試 Terraform 模組。

注意

本範例會在本機執行模組;不在 Azure 上。

確認 Docker 已安裝並執行

從命令提示字元中, 輸入 docker version

Docker version

產生的輸出會確認已安裝 Docker。

若要確認 Docker 實際執行中,請輸入 docker info

Docker info

設定 Docker 容器

  1. 從命令提示字元輸入

    docker build --build-arg BUILD_ARM_SUBSCRIPTION_ID= --build-arg BUILD_ARM_CLIENT_ID= --build-arg BUILD_ARM_CLIENT_SECRET= --build-arg BUILD_ARM_TENANT_ID= -t terra-mod-example ..

    成功建置的訊息隨即顯示。

    Message indicating a successful build

  2. 從命令提示字元中,輸入 docker image ls 以查看已建立的模組 terra-mod-example 列出。

    List containing the new module

  3. 輸入 docker run -it terra-mod-example /bin/sh。 執行 docker run 命令之後,您位於 Docker 環境中。 此時,您可以使用 命令來探索檔案 ls

    File list in Docker

建置模組

  1. 執行以下命令:

    bundle install
    
  2. 執行以下命令:

    rake build
    

    Rake build

執行端對端測試

  1. 執行以下命令:

    rake e2e
    
  2. 幾分鐘后, PASS 訊息就會出現。

    PASS

  3. 輸入 exit 以完成測試並結束 Docker 環境。

6. 使用 Yeoman 產生器來建立及測試模組

在本節中,Yeoman 產生器是用來在 Cloud Shell 中建立和測試模組。 使用 Cloud Shell 而不是使用 Docker 檔案可大幅簡化程式。 使用 Cloud Shell 時,會預安裝下列產品:

  • Node.js
  • Yeoman
  • Terraform

啟動 Cloud Shell 工作階段

  1. 透過 Azure 入口網站shell.azure.comAzure 行動應用程式啟動 Azure Cloud Shell 會話。

  2. [歡迎使用 Azure Cloud Shell ] 頁面隨即開啟。 選取 [Bash[Linux]

    Welcome to Azure Cloud Shell

  3. 如果您尚未設定 Azure 記憶體帳戶,則會出現下列畫面。 選取 [ 建立記憶體]。

    You have no storage mounted

  4. Azure Cloud Shell 會在您先前選取的殼層中啟動,並顯示剛為您建立的雲端磁碟驅動器資訊。

    Your cloud drive has been created

準備目錄以保存您的 Terraform 模組

  1. 此時,Cloud Shell 已為您設定環境變數中的 GOPATH。 若要檢視路徑,請輸入 go env

  2. 如果尚未存在,請建立$GOPATH目錄:輸入 mkdir ~/go

  3. 在 $GOPATH 目錄中建立目錄。 此目錄用來保存在此範例中建立的不同項目目錄。

    mkdir ~/go/src
    
  4. 建立目錄來保存您的 Terraform 模組,以取代佔位符。 在此範例中,會使用 的 my-module-name 目錄名稱。

    mkdir ~/go/src/<your-module-name>
    
  5. 瀏覽至您的模組目錄:

    cd ~/go/src/<your-module-name>
    

建立及測試您的 Terraform 模組

  1. 執行下列命令並遵循指示。 當系統詢問您是否要建立 Docker 檔案時,請輸入 N

    yo az-terra-module
    
  2. 執行下列命令以安裝相依性:

    bundle install
    
  3. 執行下列命令來建置模組:

    rake build
    

    Rake build

  4. 執行下列命令以執行測試:

    rake e2e
    

    Test-pass results

對 Azure 上的 Terraform 進行疑難排解

針對在 Azure 上使用 Terraform 時的常見問題進行疑難排解

下一步