次の方法で共有


クイック スタート: Terraform を使用して Azure Automation アカウントを作成する

このクイック スタートでは、Azure Automation アカウントを作成し、Terraform を使用してアカウントに "閲覧者" ロールを割り当てます。 Automation アカウントは、Runbook を実行するためのセキュリティで保護された環境を提供するクラウドベースのサービスです。これらは、プロセスを自動化するスクリプトです。 このアカウントは、頻繁で時間がかかり、エラーが発生しやすいタスクを自動化できます。これらはクラウドで管理されます。 この Automation アカウントは、Azure ソリューションの関連リソースを保持するコンテナーである Azure リソース グループ内に作成されます。 さらに、"閲覧者" ロールが Automation アカウントに割り当てられ、Automation アカウント内のすべてのリソースを表示するアクセス許可をサブスクリプションに付与しますが、変更は行いません。

Terraform を使用すると、クラウド インフラストラクチャの定義、プレビュー、デプロイが可能になります。 Terraform を使用して、 HCL 構文を使用して構成ファイルを作成します。 HCL 構文では、Azure などのクラウド プロバイダーと、クラウド インフラストラクチャを構成する要素を指定できます。 構成ファイルを作成したら、インフラストラクチャの変更をデプロイする前にプレビューできる 実行プラン を作成します。 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。

この記事では、次のことについて説明します。

  • 一意の名前を持つ Azure リソース グループを作成します。
  • Azure リソースの一意の名前付けのランダムな文字列を生成します。
  • Automation アカウントを作成し、パブリック ネットワーク アクセスを有効にします。
  • 現在の Azure サブスクリプションを取得します。
  • "閲覧者" のロール定義を取得します。
  • Automation アカウントに "閲覧者" ロールを割り当てます。
  • 作成されたリソース グループと Automation アカウントの名前を出力します。

前提条件

Terraform コードを実装する

  1. サンプル Terraform コードをテストして実行するディレクトリを作成し、それを現在のディレクトリにします。

  2. 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
    }
    
  3. outputs.tf という名前のファイルを作成し、次のコードを挿入します。

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "automation_account_name" {
      value = azurerm_automation_account.example.name
    }
    
  4. 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 {}
    }
    
  5. 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 デプロイを初期化します。 このコマンドによって、Azure リソースを管理するために必要な Azure プロバイダーがダウンロードされます。

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 を呼び出します。

結果を確認する

  1. Azure リソース グループ名を取得します。

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Automation アカウント名を取得します。

    automation_account_name=$(terraform output -raw automation_account_name)
    
  3. az automation account show を実行して Automation アカウントを表示します。

    az automation account show --name $automation_account_name --resource-group $resource_group_name
    

リソースをクリーンアップする

Terraform を使用して作成したリソースが不要になった場合は、次の手順を実行します。

  1. terraform プランを実行し、destroy フラグを指定します。

    terraform plan -destroy -out main.destroy.tfplan
    

    重要なポイント:

    • terraform plan コマンドは、実行プランを作成しますが、実行はしません。 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。
    • 省略可能な -out パラメーターを使用すると、プランの出力ファイルを指定できます。 -out パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。
  2. terraform apply を実行して実行プランを適用します。

    terraform apply main.destroy.tfplan
    

Azure での Terraform のトラブルシューティング

Azure で Terraform を使用する場合の一般的な問題のトラブルシューティングを行います

次のステップ

このクイックスタートでは、Automation アカウントを作成しました。 詳細については、Automation アカウントに関する記事 を参照してください。

Automation アカウントでマネージド ID を使用するには、次に進んでください: