今日は小ネタ。ワクチン接種したら微妙に腕が痛くてあまり何もする気が起きなかった。
はじめに
これまでAzureの各種リソースを構築する際はAzure Portal上で作業をしていました。はじめての構築時はわかりやすいのですが、わかりきった内容を作る場合は色々とまどろっこしいものです。AzureにはARMテンプレートという機能があり、ポータルからエクスポートもできるのですが、JSON形式でメンテナンスがちょっと大変な感じです(個人の感想です)。
各種リソースのメニューでARMテンプレートの出力ができるので、お手軽ではあります。
そこでここではTerraformというツールを使って各種リソースを構築してみることにします。
Azure上でのTerraform
新しいツールを利用するとき環境構築が面倒くさいのですが、Azure Cloud ShellにはすでにTerraformがインストールされているので今回はCloud Shell上で実行してみることにします。
ドキュメントもあります。
どういうことができるかは、まずはTerraformのWebページ上にあるチュートリアルをやって理解することにします。
リソースグループを作成する
まずは簡単にリソースグループを作成してみます。こんな感じのスクリプトを用意します。
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 2.65" } } required_version = ">= 0.14.9" } provider "azurerm" { features {} } resource "azurerm_resource_group" "rg" { name = "rg-railsapp" location = "japaneast" }
あとは、これをAzure Cloud Shellにアップロードして、terraform init
、terraform apply
を実行します。
プロンプトでDo you want to perform these actions
(これらの処理を実行しても良い?)と聞かれるのでyes
と入力するとリソースグループが作成されます。
Azure Container Registryを作成する
次にAzure Container Registryを作成します。先程作成したスクリプトを以下のように更新します。
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 2.65" } } required_version = ">= 0.14.9" } provider "azurerm" { features {} } resource "azurerm_resource_group" "rg" { name = "rg-railsapp" location = "japaneast" } # Create an Azure Container Registry resource "azurerm_container_registry" "acr" { name = "crmiyohiderailsapp" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku = "Basic" admin_enabled = true }
resource_group_name
やlocation
は先程作成したリソースグループのものをazurerm_resource_group.rg
を使って参照することができるようです。これをAzure Cloud Shellにアップロードしてterraform apply
を実行します。
すでにあるリソースグループに対して変更は行われず、追加でAzure Container Registryを作成します。
削除
削除はterraform destroy
を実行すればOKです。
ポータル上でも確認してみます。無事削除されていることがわかります。
参考資料
Terraformの公式にAzureの各種リソースを扱うためのドキュメントが整備されているので、これをみて色々とやってみると良いかと思います。
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs