- OpenTofu言語
- OpenTofu設定
- バックエンド
- azurerm
バックエンドタイプ: 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"
}
}
ストレージへの認証にAzureADを使用する場合は、ストレージBLOBデータ所有者ロールが割り当てられていることを確認する必要があります。
ストレージアカウントに関連付けられたアクセスキーを使用して認証する場合
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"
}
}
ストレージへの認証にAzureADを使用する場合は、ストレージBLOBデータ所有者ロールが割り当てられていることを確認する必要があります。
ストレージアカウントに関連付けられたアクセスキーを使用して認証する場合
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..."
}
}
設定変数
資格情報やその他の機密データを提供するには、環境変数を使用することをお勧めします。 -backend-configを使用するか、これらの値を構成に直接ハードコードすると、OpenTofuはこれらの値を.terraformサブディレクトリとプランファイルの両方に含めます。詳細は、資格情報と機密データを参照してください。
以下の設定オプションがサポートされています
-
storage_account_name- (必須) ストレージアカウントの名前。 -
container_name- (必須) ストレージアカウント内のストレージコンテナーの名前。 -
key- (必須) ストレージコンテナー内でOpenTofuの状態ファイルを 取得/保存するために使用されるBLOBの名前。 -
environment- (オプション) 使用するAzure環境。これは、ARM_ENVIRONMENT環境変数から取得することもできます。可能な値は、public、china、german、stack、usgovernmentです。デフォルトはpublicです。 -
endpoint- (オプション) Azure Resource Managerのカスタムエンドポイント。これは、ARM_ENDPOINT環境変数から取得することもできます。注意endpointは、Azure Stackを使用する場合にのみ構成する必要があります。 -
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環境変数からも取得できます。注意ストレージへの認証にAzureADを使用する場合は、
ストレージBLOBデータ所有者ロールが割り当てられていることを確認する必要があります。
クライアント証明書を持つサービスプリンシパルを使用して認証する場合、以下のフィールドもサポートされます。
-
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環境変数から取得することもできます。