次の方法で共有


クイック スタート: Terraform を使用して Azure Container Registry を作成する

このクイックスタートでは、Terraform を使用して Azure Container Registry とリソース グループを作成します。 Azure Container Registry は、プライベート Docker コンテナー イメージを保存するために使用されるマネージド Docker レジストリ サービスです。 これは通常、Azure Kubernetes Service (AKS)、Azure App Service、およびその他の Azure サービスで使用され、コンテナー イメージを取得します。 レジストリは、Azure にデプロイされたリソースの論理コンテナーであるリソース グループ内に保存されます。 これらのリソースは、プレフィックスとランダムな文字列を組み合わせて一意の名前で作成され、Azure サブスクリプション内で一意であることが保証されます。

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

  • Terraform の必要なバージョンと必要なプロバイダーを指定します。
  • 追加機能を使用せずに Azure プロバイダーを定義します。
  • リソース グループの場所の変数を定義し、既定値を "eastus" にします。
  • リソース グループ名のプレフィックスの変数を定義し、既定値を "rg" にします。
  • リソース グループのランダムなペット名を生成します。
  • 指定した場所に、生成された名前で Azure リソース グループを作成します。
  • コンテナー レジストリ名の一部として使用される 5 文字の小文字のランダムな文字列を生成します。
  • 生成された文字列を名前の一部として、上記と同じ場所とリソース グループにコンテナー レジストリを作成します。
  • 作成されたリソース グループとコンテナー レジストリの名前を出力します。
  • 作成されたコンテナー レジストリのログイン サーバーを出力します。

前提条件

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" "acr_name" {
      length  = 5
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_container_registry" "example" {
      name                = "${random_string.acr_name.result}registry"
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
      sku                 = "Standard"
    }
    
  3. outputs.tf という名前のファイルを作成し、次のコードを挿入します。

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "container_registry_name" {
      value = azurerm_container_registry.example.name
    }
    
    output "container_registry_login_server" {
      value = azurerm_container_registry.example.login_server
    }
    
  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_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    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."
    }
    

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

結果を確認する

az acr show 実行して、コンテナー レジストリを表示します。

az acr show --name <registry_name> --resource-group <resource_group_name>

<registry_name> を実際のコンテナー レジストリの名前に置き換え、<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 を使用する場合の一般的な問題のトラブルシューティングを行います

次のステップ