Open3
Azureでterraform test
はじめに
Terraform v1.6.0で導入された、testコマンドをAzureで実行してみるの巻。
尚、手元の環境はmoduleを使っており、ざっと下記のようなディレクトリ構成になっています。
root
├ modules // サービス毎にmoduleを定義
│ ├ resource_group
│ │ ├ main.tf
│ │ ├ variables.tf
│ │ └ output.tf
│ └ appservice_plan
├ develop // 環境毎にディレクトリを定義
│ ├ main.tf // moduleを呼び出してリソースを作成
│ └ variables.tf
├ staging
└ production
modulesディレクトリで実行したときのあれこれ
上記で実行したときにハマったことや気付いたことについてメモっていきます。
module本体とtestは下記の通り。
modules/resource_group/main.tf
resource "azurerm_resource_group" "common_module_resource_group" {
name = var.resource_group_config.name
location = var.common_config.location
}
modules/resource_group/resouce_group.tftest.hcl
run "test" {
command = plan
assert {
condition = azurerm_resource_group.common_module_resource_group.name == "rg-common-dev-je-001"
error_message = "Resource group name is not correct"
}
}
エラー:Missing required provider
以下のエラーが出ました。
initせいってことなので、terraform init
をして再実行。
│ This configuration requires provider registry.terraform.io/hashicorp/azurerm, but that provider isn't available. You may be able to install it
│ automatically by running:
│ terraform init
エラー:Insufficient features blocks
どうやらfeautre
ブロックが必要みたいです。
│ on <empty> line 0:
│ (source code not available)
│
│ At least 1 "features" blocks are required.
resouce_group.tftest.hcl
を以下に書き換えて再実行してみます。
provider "azurerm" {
features {}
}
run "test" {
command = plan
assert {
condition = azurerm_resource_group.common_module_resource_group.name == "rg-common-dev-je-001"
error_message = "Resource group name is not correct"
}
}
通りました〜
plan実行にあたり多少いじいじする必要ありますね。