- 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
環境変数から取得することもできます。