Dominios de disponibilidad de referencia

Utilice las configuraciones de Resource Manager y Terraform para gestionar dominios de disponibilidad.

Nota

En los ejemplos de esta página se utiliza la variable de compartimento var.compartment_ocid. Para especificar el arrendamiento o el compartimento raíz, utilice la variable de arrendamiento, var.tenancy_ocid.

En cuanto a los dominios de disponibilidad, evite el siguiente patrón:

// Get all availability domains for the region
data "oci_identity_availability_domains" "ads" {
  compartment_id = "${var.compartment_ocid}"
}
  
// Then either use it to get a single AD name based on the index:
resource "oci_core_instance" "nat" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ads.availability_domains[var.nat_instance_ad],"name")}"
  ...
}
  
// Or iterate through all the ADs:
resource "oci_core_subnet" "nat" {
  count = "${length(data.oci_identity_availability_domains.ads.availability_domains)}"
  availability_domain = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
  ...
}

En su lugar, se recomienda mostrar explícitamente los nombres de dominio de disponibilidad para las regiones de la configuración. Para ello, utilice una variable definida como se indica a continuación:

variable "ad_list" {
  type = list
}

A continuación, puede utilizar la variable como se muestra aquí:

// Index:
resource "oci_core_instance" "nat" {
  availability_domain = "${var.ad_list[var.nat_instance_ad_index]}"
  ...
}
  
// Or iterate through all the ADs:
resource "oci_core_subnet" "nat" {
  count = "${length(var.ad_list)}"
  availability_domain = "${var.ad_list[count.index]}"
  ...
}

A continuación, puede definir la variable ad_list directamente utilizando los nombres de dominio de disponibilidad para el inquilino y la región, como se muestra aquí:

variable "ad_list" {
  type = list
  default = ["kIdk:PHX-AD-1","kIdk:PHX-AD-2","kIdk:PHX-AD-3"]
}

La ventaja de utilizar este método es que le brinda control del uso de dominio de disponibilidad y evita que se produzcan cambios inesperados con el tiempo. Sin embargo, este enfoque es problemático cuando las configuraciones se comparten entre arrendamientos y regiones, porque los nombres de dominio de disponibilidad son específicos del arrendamiento y la región.

Una alternativa adecuada es definir el valor ad_list mediante el origen de datos oci_identity_availability_domains. Haga esto en la configuración y, a continuación, transfiérala a los módulos. Esto centraliza de forma eficaz la lista de dominios de disponibilidad, lo que facilita el cambio a una lista explícita más adelante si es necesario. (En los propios módulos, no utilice el origen de datos oci_identity_availability_domains).

data "oci_identity_availability_domains" "ads" {
  compartment_id = "${var.compartment_ocid}"
}
 
data "template_file" "ad_names" {
  count = "${length(data.oci_identity_availability_domains.ads.availability_domains)}"
  template = "${lookup(data.oci_identity_availability_domains.ads.availability_domains[count.index], "name")}"
}
  
module "ssm_network" {
  ad_list = "${data.template_file.ad_names.*.rendered}"
  ...
}

Regiones con un único dominio de disponibilidad

Algunas regiones de Oracle Cloud Infrastructure tienen un único dominio de disponibilidad. Al escribir configuraciones que utilicen varios orígenes de datos, como oci_identity_availability_domains, asegúrese de tener en cuenta un único dominio si la región lo requiere.

En el siguiente ejemplo, se utiliza el origen de datos oci_identity_availability_domains al mostrar los dominios de errores de una región de un dominio de disponibilidad única. El índice availability_domains debe ser 0. Cualquier otro valor de índice no es válido en esta región:

data "oci_identity_availability_domains" "ads" {
  compartment_id = "${var.compartment_ocid}"
}

data "oci_identity_fault_domains" "FaultDomains" {
    availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0]["name"]
    compartment_id = "${var.compartment_ocid}"
}

La referencia completa de los recursos y orígenes de datos que soporta el proveedor de Terraform de OCI contiene detalles sobre el uso, los argumentos y los atributos. La referencia completa está disponible en docs.oracle.com y en Terraform Registry.