非同期操作の有効化
Terraform構成で非同期操作を有効にします。
ノート
非同期リソースが完全に作成される前に操作を開始しないようにするには、Terraform構成で非同期リソースに対するリソースの依存関係がコーディングされていないことを確認してください。非同期リソースの場合、Terraformでは、リソースの作成または削除が開始された後に、リソースのステージが確認されることはありません。
非同期リソースが完全に作成される前に操作を開始しないようにするには、Terraform構成で非同期リソースに対するリソースの依存関係がコーディングされていないことを確認してください。非同期リソースの場合、Terraformでは、リソースの作成または削除が開始された後に、リソースのステージが確認されることはありません。
Terraformでは複数のスレッドを使用し、操作が並行して実行されますが、どのスレッドでもリソースのライフサイクルの状態が変わるため、操作は同期的に処理する必要があります。デフォルトでは、Terraformでリソースが作成、更新または削除されると、そのリソースが予定されているライフサイクルの状態になるまで処理が待機されます。拡張オプションを使用して、リソースを非同期で作成、更新または削除すると、Terraformの操作中にこの待機ステージをなくすことができます。
この機能を有効にするには、async = true
フラグをリソースに追加します。Terraformでは、creating
またはdeleting
がターゲットのライフサイクル・ステージとみなされます。例:
resource "oci_core_instance" "test_instance" {
async = true
count = var.num_instances
availability_domain = data.oci_identity_availability_domain.ad.name
compartment_id = var.compartment_ocid
display_name = "TestInstance${count.index}"
shape = var.instance_shape
}
この機能を使用すると、Terraformのネイティブ動作のオーバーライドと引き換えに、リソースをより速く作成および削除できます。async
オプションを使用する場合は、次のことに注意してください:
- リソースがまだ作成されていないため、状態ファイルにはリソースの完全な情報がありません。
- リソースの作成に失敗したかどうかを含め、完全な情報を取得するには、リソースのステージをリフレッシュする必要があります。
- Terraformでは、リソースの作成または削除が開始された後に、リソースのステージが再度確認されることはありません。失敗した操作は、次にリソースがリフレッシュされたときに表示されます。
- 別の操作が開始される前にはリソースが完全に作成されていないため、非同期リソースには依存関係はありません。
重要
TerraformのOCIプロバイダでは現在、
TerraformのOCIプロバイダでは現在、
oci_core_instance
リソースのasync
フラグがサポートされています。状態ファイルのリフレッシュ
terraform apply
を実行し、新しいリソースでasync
オプションが使用されると、リソースの情報が不完全な状態ファイルが作成されます。次に示すように、状態ファイルの多くの値がnullになり、リソースがPROVISIONING
状態になる可能性があります:
...
"async": true,
...
"state": "PROVISIONING",
...
"private_ip": null,
"public_ip": null,
"subnet_id": null,
...
リソースが作成されたら、terraform refresh
、terraform plan
またはterraform apply
を実行して、完全なリソース情報で状態ファイルを更新できます。状態ファイルは更新され、次のようになります:
...
"async": true,
...
"state": "RUNNING",
...
"private_ip": "10.255.255.254",
"public_ip": "192.0.2.2",
"subnet_id": "ocid1.subnet.oc1..exampleuniqueID",
...