このクイック スタートでは、Azure Automation アカウントを作成し、Terraform を使用してアカウントに "閲覧者" ロールを割り当てます。 Automation アカウントは、Runbook を実行するためのセキュリティで保護された環境を提供するクラウドベースのサービスです。これらは、プロセスを自動化するスクリプトです。 このアカウントは、頻繁で時間がかかり、エラーが発生しやすいタスクを自動化できます。これらはクラウドで管理されます。 この Automation アカウントは、Azure ソリューションの関連リソースを保持するコンテナーである Azure リソース グループ内に作成されます。 さらに、"閲覧者" ロールが Automation アカウントに割り当てられ、Automation アカウント内のすべてのリソースを表示するアクセス許可をサブスクリプションに付与しますが、変更は行いません。
Terraform を使用すると、クラウド インフラストラクチャの定義、プレビュー、デプロイが可能になります。 Terraform を使用して、 HCL 構文を使用して構成ファイルを作成します。 HCL 構文では、Azure などのクラウド プロバイダーと、クラウド インフラストラクチャを構成する要素を指定できます。 構成ファイルを作成したら、インフラストラクチャの変更をデプロイする前にプレビューできる 実行プラン を作成します。 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。
この記事では、次のことについて説明します。
- 一意の名前を持つ Azure リソース グループを作成します。
- Azure リソースの一意の名前付けのランダムな文字列を生成します。
- Automation アカウントを作成し、パブリック ネットワーク アクセスを有効にします。
- 現在の Azure サブスクリプションを取得します。
- "閲覧者" のロール定義を取得します。
- Automation アカウントに "閲覧者" ロールを割り当てます。
- 作成されたリソース グループと Automation アカウントの名前を出力します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウントを作成します。 アカウントは無料で作成できます。 新しい Automation アカウントのオプションは、Azure portal の [ Automation アカウントの作成 ] ページのタブに整理されます。
Terraform コードを実装する
注意
この記事のサンプル コードは、 Azure Terraform GitHub リポジトリにあります。 Terraform の現在および以前のバージョンからのテスト結果を含むログ ファイルを表示できます。
Terraform を使用して Azure リソースを管理する方法を示すその他の記事とサンプル コードを参照してください。
サンプル Terraform コードをテストして実行するディレクトリを作成し、それを現在のディレクトリにします。
main.tf
という名前のファイルを作成し、次のコードを挿入します。resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_string" "azurerm_automation_account_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_automation_account" "example" { name = coalesce(var.automation_account_name, "autoacc-${random_string.azurerm_automation_account_name.result}") resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku_name = "Basic" identity { type = "SystemAssigned" } public_network_access_enabled = true } data "azurerm_subscription" "current" {} data "azurerm_role_definition" "contributor" { name = "Contributor" } resource "azurerm_role_assignment" "example" { scope = data.azurerm_subscription.current.id role_definition_name = "Contributor" principal_id = azurerm_automation_account.example.identity[0].principal_id }
outputs.tf
という名前のファイルを作成し、次のコードを挿入します。output "resource_group_name" { value = azurerm_resource_group.rg.name } output "automation_account_name" { value = azurerm_automation_account.example.name }
providers.tf
という名前のファイルを作成し、次のコードを挿入します。terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
variables.tf
という名前のファイルを作成し、次のコードを挿入します。variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "automation_account_name" { type = string description = "The name of the Automation Account resource. The value will be randomly generated if blank." default = "" }
Terraform を初期化する
terraform init
terraform init -upgrade
重要なポイント:
-
-upgrade
パラメーターは、必要なプロバイダー プラグインを、構成のバージョン制約に準拠する最新バージョンにアップグレードします。
Terraform 実行プランを作成する
terraform プランを実行して実行プランを作成します。
terraform plan -out main.tfplan
重要なポイント:
-
terraform plan
コマンドは、実行プランを作成しますが、実行はしません。 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。 - 省略可能な
-out
パラメーターを使用すると、プランの出力ファイルを指定できます。-out
パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。
Terraform 実行プランを適用する
terraform apply を実行して、実行プランをクラウド インフラストラクチャに適用します。
terraform apply main.tfplan
重要なポイント:
-
terraform apply
コマンドの例は、以前にterraform plan -out main.tfplan
が実行されたことを前提としています。 -
-out
パラメーターに別のファイル名を指定した場合は、terraform apply
の呼び出しで同じファイル名を使用します。 -
-out
パラメーターを使用しなかった場合は、パラメーターを指定せずにterraform apply
を呼び出します。
結果を確認する
Azure リソース グループ名を取得します。
resource_group_name=$(terraform output -raw resource_group_name)
Automation アカウント名を取得します。
automation_account_name=$(terraform output -raw automation_account_name)
az automation account show
を実行して Automation アカウントを表示します。az automation account show --name $automation_account_name --resource-group $resource_group_name
リソースをクリーンアップする
Terraform を使用して作成したリソースが不要になった場合は、次の手順を実行します。
terraform プランを実行し、
destroy
フラグを指定します。terraform plan -destroy -out main.destroy.tfplan
重要なポイント:
-
terraform plan
コマンドは、実行プランを作成しますが、実行はしません。 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。 - 省略可能な
-out
パラメーターを使用すると、プランの出力ファイルを指定できます。-out
パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。
-
terraform apply を実行して実行プランを適用します。
terraform apply main.destroy.tfplan
Azure での Terraform のトラブルシューティング
Azure で Terraform を使用する場合の一般的な問題のトラブルシューティングを行います。
次のステップ
このクイックスタートでは、Automation アカウントを作成しました。 詳細については、Automation アカウントに関する記事 を参照してください。
Automation アカウントでマネージド ID を使用するには、次に進んでください: