使用 Yeoman 在 Azure 中建立 Terraform 基底範本
Terraform 可讓您定義、預覽和部署雲端基礎結構。 使用 Terraform 時,您可以使用 HCL 語法來建立設定檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立設定檔之後,您可以建立執行計畫,讓您先預覽基礎結構變更,之後再部署。 驗證變更之後,您可以套用執行計畫來部署基礎結構。
在本文中,您將瞭解如何使用 Terraform 和 Yeoman 的組合。 Terraform 是用來在 Azure 上建立基礎結構的工具。 Yeoman 可讓您輕鬆地建立 Terraform 模組。
在本文中,您將瞭解如何執行下列工作:
- 使用 Yeoman 模組產生器建立基底 Terraform 範本。
- 使用兩種不同的方法測試 Terraform 範本。
- 使用 Docker 檔案執行 Terraform 模組。
- 在 Azure Cloud Shell 中以原生方式執行 Terraform 模組。
1.設定您的環境
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
設定 Terraform:如果您尚未這麼做,請使用下列其中一個選項來設定 Terraform:
Visual Studio Code: 下載適用於您平臺的 Visual Studio Code 。
Docker:安裝 Docker 以執行 Yeoman 產生器所建立的模組。
Go 程式設計語言: 以 Yeoman 產生的測試案例安裝 Go 是使用 Go 語言的程式代碼。
Nodejs:Install Node.js
安裝 Yeoman:執行下列命令:
npm install -g yo
。Yeoman 範本: 執行下列命令以安裝 Terraform 模組的 Yeoman 範本:
npm install -g generator-az-terra-module
。
2.建立 Yeoman 產生的模組目錄
Yeoman 樣本會在當前目錄中產生檔案。 基於這個理由,您必須建立目錄。
此空白目錄必須放在 $GOPATH/src 之下。 如需此路徑的詳細資訊,請參閱設定 GOPATH 一文。
流覽至要從中建立新目錄的父目錄。
執行下列命令來取代佔位元。 在此範例中,會使用 的
GeneratorDocSample
目錄名稱。mkdir <new-directory-name>
瀏覽至新的目錄:
cd <new-directory-name>
3.建立基底模組範本
執行以下命令:
yo az-terra-module
請依照畫面上的指示提供下列資訊:
Terraform 模組項目名稱 - 用於 範例的值
doc-sample-module
。您要包含 Docker 映像檔嗎? - 輸入
y
。 如果您輸入n
,則產生的模組程式代碼僅支援在原生模式中執行。
列出目錄內容,以檢視所建立的結果檔案:
ls
4.檢閱產生的模組程序代碼
啟動 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.lock
和Gopkg.toml
:定義相依性。
如需適用於 Azure https://github.com/Azure/generator-az-terra-module的 Yeoman 產生器詳細資訊,請參閱 Terratest 檔。
5.使用 Docker 檔案測試 Terraform 模組
本節說明如何使用 Docker 檔案測試 Terraform 模組。
注意
本範例會在本機執行模組;不在 Azure 上。
確認 Docker 已安裝並執行
從命令提示字元中, 輸入 docker version
。
產生的輸出會確認已安裝 Docker。
若要確認 Docker 實際執行中,請輸入 docker info
。
設定 Docker 容器
從命令提示字元輸入
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 .
.成功建置的訊息隨即顯示。
從命令提示字元中,輸入
docker image ls
以查看已建立的模組terra-mod-example
列出。輸入
docker run -it terra-mod-example /bin/sh
。 執行docker run
命令之後,您位於 Docker 環境中。 此時,您可以使用 命令來探索檔案ls
。
建置模組
執行以下命令:
bundle install
執行以下命令:
rake build
執行端對端測試
執行以下命令:
rake e2e
幾分鐘后, PASS 訊息就會出現。
輸入
exit
以完成測試並結束 Docker 環境。
6. 使用 Yeoman 產生器來建立及測試模組
在本節中,Yeoman 產生器是用來在 Cloud Shell 中建立和測試模組。 使用 Cloud Shell 而不是使用 Docker 檔案可大幅簡化程式。 使用 Cloud Shell 時,會預安裝下列產品:
- Node.js
- Yeoman
- Terraform
啟動 Cloud Shell 工作階段
透過 Azure 入口網站、shell.azure.com 或 Azure 行動應用程式啟動 Azure Cloud Shell 會話。
[歡迎使用 Azure Cloud Shell ] 頁面隨即開啟。 選取 [Bash[Linux] 。
如果您尚未設定 Azure 記憶體帳戶,則會出現下列畫面。 選取 [ 建立記憶體]。
Azure Cloud Shell 會在您先前選取的殼層中啟動,並顯示剛為您建立的雲端磁碟驅動器資訊。
準備目錄以保存您的 Terraform 模組
此時,Cloud Shell 已為您設定環境變數中的 GOPATH。 若要檢視路徑,請輸入
go env
。如果尚未存在,請建立$GOPATH目錄:輸入
mkdir ~/go
。在 $GOPATH 目錄中建立目錄。 此目錄用來保存在此範例中建立的不同項目目錄。
mkdir ~/go/src
建立目錄來保存您的 Terraform 模組,以取代佔位符。 在此範例中,會使用 的
my-module-name
目錄名稱。mkdir ~/go/src/<your-module-name>
瀏覽至您的模組目錄:
cd ~/go/src/<your-module-name>
建立及測試您的 Terraform 模組
執行下列命令並遵循指示。 當系統詢問您是否要建立 Docker 檔案時,請輸入
N
。yo az-terra-module
執行下列命令以安裝相依性:
bundle install
執行下列命令來建置模組:
rake build
執行下列命令以執行測試:
rake e2e
對 Azure 上的 Terraform 進行疑難排解
針對在 Azure 上使用 Terraform 時的常見問題進行疑難排解
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應