非同期操作の有効化
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",
...