メインコンテンツにスキップ

バックエンドタイプ: azurerm

BLOBストレージアカウント内のBLOBコンテナー内に、指定されたキーを持つBLOBとして状態を保存します。

このバックエンドは、Azure Blob Storageのネイティブ機能による状態のロックと整合性チェックをサポートしています。

設定例

Azure CLIまたはサービスプリンシパル(クライアント証明書またはクライアントシークレットを使用)を使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
}
}

マネージドサービスID(MSI)を使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_msi = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

OpenID Connect(OIDC)を使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_oidc = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

Azure AD認証を使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_azuread_auth = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

ストレージアカウントに関連付けられたアクセスキーを使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"

# rather than defining this inline, the Access Key can also be sourced
# from an Environment Variable - more information is available below.
access_key = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}

ストレージアカウントに関連付けられたSASトークンを使用して認証する場合

コードブロック
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"

# rather than defining this inline, the SAS Token can also be sourced
# from an Environment Variable - more information is available below.
sas_token = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}

データソース設定

サービスプリンシパル(クライアント証明書またはクライアントシークレットを使用)を使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
}
}

マネージドサービスID(MSI)を使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_msi = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

OpenID Connect(OIDC)を使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_oidc = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

AzureAD認証を使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_azuread_auth = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}

ストレージアカウントに関連付けられたアクセスキーを使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"

# rather than defining this inline, the Access Key can also be sourced
# from an Environment Variable - more information is available below.
access_key = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}

ストレージアカウントに関連付けられたSASトークンを使用して認証する場合

コードブロック
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"

# rather than defining this inline, the SAS Token can also be sourced
# from an Environment Variable - more information is available below.
sas_token = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}

設定変数

以下の設定オプションがサポートされています

  • storage_account_name - (必須) ストレージアカウントの名前。

  • container_name - (必須) ストレージアカウント内のストレージコンテナーの名前。

  • key - (必須) ストレージコンテナー内でOpenTofuの状態ファイルを 取得/保存するために使用されるBLOBの名前。

  • environment - (オプション) 使用するAzure環境。これは、ARM_ENVIRONMENT環境変数から取得することもできます。可能な値は、publicchinagermanstackusgovernmentです。デフォルトはpublicです。

  • endpoint - (オプション) Azure Resource Managerのカスタムエンドポイント。これは、ARM_ENDPOINT環境変数から取得することもできます。

  • metadata_host - (オプション) カスタムAzure環境を使用する場合に、クラウド環境を取得するために使用されるAzureメタデータサービスのホスト名(例:management.azure.com)。これは、ARM_METADATA_HOSTNAME環境変数から取得することもできます。

  • snapshot - (オプション) OpenTofuの状態ファイルを保存するために使用されるBLOBを、使用する前にスナップショットする必要がありますか?デフォルトはfalseです。この値は、ARM_SNAPSHOT環境変数から取得することもできます。


マネージドサービスID(MSI)を使用して認証する場合、以下のフィールドもサポートされます

  • resource_group_name - (必須) ストレージアカウントが存在するリソースグループの名前。

  • msi_endpoint - (オプション) カスタムマネージドサービスIDエンドポイントへのパス。指定しない場合は自動的に決定されます。これは、ARM_MSI_ENDPOINT環境変数から取得することもできます。

  • subscription_id - (オプション) ストレージアカウントが存在するサブスクリプションID。これは、ARM_SUBSCRIPTION_ID環境変数から取得することもできます。

  • tenant_id - (オプション) サブスクリプションが存在するテナントID。これは、ARM_TENANT_ID環境変数から取得することもできます。

  • use_msi - (オプション) マネージドサービスID認証を使用する必要がありますか?これは、ARM_USE_MSI環境変数から取得することもできます。


OpenID Connect(OIDC)を使用してサービスプリンシパルで認証する場合、以下のフィールドもサポートされます

  • oidc_request_url - (オプション) IDトークンをリクエストするOIDCプロバイダーのURL。これは、ARM_OIDC_REQUEST_URLまたはACTIONS_ID_TOKEN_REQUEST_URL環境変数から取得することもできます。

  • oidc_request_token - (オプション) OIDCプロバイダーへのリクエストのベアラトークン。これは、ARM_OIDC_REQUEST_TOKENまたはACTIONS_ID_TOKEN_REQUEST_TOKEN環境変数から取得することもできます。

  • oidc_token - (オプション) OpenID Connect(OIDC)を使用して認証する場合のIDトークン。これは、ARM_OIDC_TOKEN環境変数から取得することもできます。

  • oidc_token_file_path - (オプション)OpenID Connect(OIDC)を使用して認証する場合の、ID トークンを含むファイルへのパス。これは、ARM_OIDC_TOKEN_FILE_PATH 環境変数からも取得できます。

  • use_oidc - (オプション)OIDC 認証を使用する必要がありますか?これは、ARM_USE_OIDC 環境変数からも取得できます。


ストレージアカウントに関連付けられた SAS トークンを使用して認証する場合、以下のフィールドもサポートされます。

  • sas_token - (オプション)Blob ストレージアカウントへのアクセスに使用される SAS トークン。これは、ARM_SAS_TOKEN 環境変数からも取得できます。

ストレージアカウントのアクセスキーを使用して認証する場合、以下のフィールドもサポートされます。

  • access_key - (オプション)Blob ストレージアカウントへのアクセスに使用されるアクセスキー。これは、ARM_ACCESS_KEY 環境変数からも取得できます。

AzureAD 認証を使用して認証する場合、以下のフィールドもサポートされます。

  • use_azuread_auth - (オプション)Blob ストレージアカウントへのアクセスに AzureAD 認証を使用する必要がありますか?これは、ARM_USE_AZUREAD 環境変数からも取得できます。


クライアント証明書を持つサービスプリンシパルを使用して認証する場合、以下のフィールドもサポートされます。

  • resource_group_name - (必須) ストレージアカウントが存在するリソースグループの名前。

  • client_id - (オプション)サービスプリンシパルのクライアント ID。これは、ARM_CLIENT_ID 環境変数からも取得できます。

  • client_certificate_password - (オプション)client_certificate_path で指定されたクライアント証明書に関連付けられたパスワード。これは、ARM_CLIENT_CERTIFICATE_PASSWORD 環境変数からも取得できます。

  • client_certificate_path - (オプション)サービスプリンシパルとして認証する場合にクライアント証明書として使用される PFX ファイルへのパス。これは、ARM_CLIENT_CERTIFICATE_PATH 環境変数からも取得できます。

  • subscription_id - (オプション) ストレージアカウントが存在するサブスクリプションID。これは、ARM_SUBSCRIPTION_ID環境変数から取得することもできます。

  • tenant_id - (オプション) サブスクリプションが存在するテナントID。これは、ARM_TENANT_ID環境変数から取得することもできます。


クライアントシークレットを持つサービスプリンシパルを使用して認証する場合、以下のフィールドもサポートされます。

  • resource_group_name - (必須) ストレージアカウントが存在するリソースグループの名前。

  • client_id - (オプション)サービスプリンシパルのクライアント ID。これは、ARM_CLIENT_ID 環境変数からも取得できます。

  • client_secret - (オプション)サービスプリンシパルのクライアントシークレット。これは、ARM_CLIENT_SECRET 環境変数からも取得できます。

  • subscription_id - (オプション) ストレージアカウントが存在するサブスクリプションID。これは、ARM_SUBSCRIPTION_ID環境変数から取得することもできます。

  • tenant_id - (オプション) サブスクリプションが存在するテナントID。これは、ARM_TENANT_ID環境変数から取得することもできます。