AzureでTerraform使うことになったのでメモ。
はじめに
Terraformのコードはかなりバージョン依存が強いです。なので、本家の最新サンプルなど参考にした方がいいです。
原因不明のエラーでしばらく悩みました。
事前準備
Azure CLIのインストール
基からTerraformがインストールされているAzure Cloud Shell使う例が多いようですが、今回はCLI。
Homebrewで入ります。
brew install azure-cli
いちおう動作チェック。
az --version
Terafformのインストール
オフィシャルでは、下記コマンドが紹介されています。こちらもHomebrewで入るみたい。
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
ただ、Terraformはバージョンがコロコロ変わるかつ依存が高いので、tfenvというバージョン(環境)切り替えツールを介してインストールしてみます。
tfenv自体はHomebrewで入ります。
brew install tfenv
とりあえずlatestを入れてみる。
tfenv install latest
提供されてるバージョンリストは、tfenv list-remote で確認可能です。
インストールされているバージョンを確認。
tfenv list
執筆時点では1.3.6が最新なので、それを利用するように指定。
tfenv use 1.3.6
動作確認。
terraform --version
VSCodeにTerafform用の機能拡張を入れる
設定の記述自体はvscodeで記述するのでプラグイン入れておきます。
とりあえず下記2つを入れました。オフィシャルのやつとAzure用のもの。
プラグインは再起動なしでうまく起動するはずだがフォーマッタ機能が再起動後じゃないとうまく動作しなかったです。
- https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform
- https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform
基本操作?
最低限の動作確認をしてみたいと思います。
基本的には本家のチュートリアルの一部を端折ってやってみるだけ。
Azureへのログイン
コマンドラインでAzureにログインします。
サービスプリンシパルを使う方法が検索にひっかかるし、その方がいいのでは?と思うのですが、Azure CLI経由では更新系?の操作が通常?のログインじゃないとできないみたいなので普通にログインします。
az login
作業場とファイルを作る
作業用のディレクトリとファイルを作ります。
cd
mkdir terra-test
cd terra-test
とりあえず今回はmain.tfにまとめて書く。
touch main.tf
テンプレートファイルを書く
記述します。プロバイダー関連をproviders.tfに切り出すのが一般的みたいですね。
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0.2"
}
}
required_version = ">= 1.1.0"
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
name = "myTFResourceGroup"
location = "japaneast"
}
初期化
ファイルを記述したら初期化します。必要なフィアルなどがダウンロードされます。
プロバイダのバージョンなどが違うとエラーが出るみたい。
terraform init
フォーマット確認
ネットの記事ではplanを生成する感じだったとけどチュートリアルはフォーマットの検証する感じなのでしてみる。
terraform fmt
バリデート
内容の?検証。
terraform validate
適用
問題なければ適用。
terraform apply
状態確認
terraform show
terraform state list
必要に応じてWebポータルなどでも確認。
片付け
いらなくなったらdestroyで掃除。
terraform destroy
とりあえずは以上。
他のリソース生成も随時試してみたい。