Activación de operaciones asíncronas
Habilite el funcionamiento asíncrono en una configuración de Terraform.
Para evitar operaciones de inicio antes de que se hayan creado por completo los recursos asíncronos, asegúrese de que la configuración de Terraform no codifique las dependencias de recursos en recursos asíncronos. Para los recursos asíncronos, Terraform no vuelve a comprobar la etapa de un recurso después de iniciar su creación o supresión.
Aunque Terraform utiliza varios threads para ejecutar operaciones en paralelo, cada thread individual que lleva un recurso a través de los estados de su ciclo de vida sigue necesitando manejar sus operaciones de forma síncrona. Por defecto, cuando Terraform crea, actualiza o suprime un recurso, espera a que ese recurso alcance el estado esperado de su ciclo de vida para poder continuar. Para evitar esta etapa de espera durante las operaciones de Terraform, puede utilizar una opción avanzada para crear, actualizar o suprimir recursos de forma asíncrona.
Para activar esta función, puede agregar el indicador async = true
al recurso. A continuación, Terraform considera creating
o deleting
como la etapa de ciclo de vida de destino. Por ejemplo:
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
}
Utilice esta función para crear y suprimir recursos de una forma más rápida a cambio de sustituir el comportamiento nativo de Terraform. Al utilizar la opción async
, tenga en cuenta lo siguiente:
- El archivo de estado no tiene la información completa del recurso porque este aún no se ha creado.
- La etapa del recurso se debe refrescar para obtener toda su información, incluido si el recurso no se ha podido crear.
- Terraform no vuelve a comprobar la etapa de un recurso después de iniciar su creación o supresión. Las operaciones fallidas solo se muestran en los refrescamientos posteriores del recurso.
- El recurso asíncrono no debe tener ninguna dependencia, porque el recurso no se ha creado completamente antes de que comience otra operación.
El proveedor de OCI de Terraform actualmente soporta el indicador
async
para el recurso oci_core_instance
.Refrescamiento del archivo de estado
Cuando ejecuta terraform apply
y los nuevos recursos utilizan la opción async
, el archivo de estado se crea con información incompleta para el recurso. El archivo de estado incluye muchos valores nulos y el recurso puede estar en el estado PROVISIONING
, por ejemplo:
...
"async": true,
...
"state": "PROVISIONING",
...
"private_ip": null,
"public_ip": null,
"subnet_id": null,
...
Una vez creado el recurso, puede ejecutar terraform refresh
, terraform plan
o terraform apply
para actualizar el archivo de estado con información completa del recurso. El archivo de estado se actualizará para tener un aspecto similar al siguiente:
...
"async": true,
...
"state": "RUNNING",
...
"private_ip": "10.255.255.254",
"public_ip": "192.0.2.2",
"subnet_id": "ocid1.subnet.oc1..exampleuniqueID",
...