Che fanno riferimento ai domini di disponibilità

Utilizzare il provider Terraform di Oracle Cloud Infrastructure per gestire i domini di disponibilità.

Nota

Gli esempi in questa pagina utilizzano la variabile di compartimento var.compartment_ocid. Per specificare la tenancy o il compartimento radice, utilizzare la variabile della tenancy, var.tenancy_ocid.

Per quanto riguarda i domini di disponibilità, evitare il pattern seguente:

// 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")}"
  ...
}

In alternativa, si consiglia di elencare in modo esplicito i nomi dei domini di disponibilità per le aree nella configurazione. A tale scopo, utilizzare una variabile definita come indicato di seguito.

variable "ad_list" {
  type = list
}

È quindi possibile utilizzare la variabile come mostrato qui:

// 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]}"
  ...
}

È quindi possibile impostare la variabile ad_list direttamente utilizzando i nomi di dominio di disponibilità per il tenant e l'area, come mostrato qui:

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

Il vantaggio dell'utilizzo di questo metodo consiste nel controllare l'uso del dominio di disponibilità e nell'evitare modifiche impreviste nel tempo. Tuttavia, questo approccio presenta problemi quando le configurazioni vengono condivise tra tenancy e aree, poiché i nomi di dominio di disponibilità sono specifici della tenancy e dell'area.

Un'alternativa conveniente consiste nell'impostare il valore ad_list utilizzando l'origine dati oci_identity_availability_domains. Eseguire questa operazione nella configurazione, quindi passare i moduli. Ciò consente di centralizzare efficacemente l'elenco dei domini AD, semplificando il passaggio a un elenco esplicito in un secondo momento, se necessario. Nei moduli stessi, non utilizzare l'origine dati 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}"
  ...
}

Aree con un singolo dominio di disponibilità

Alcune region di Oracle Cloud Infrastructure hanno un dominio di disponibilità singolo. Quando si scrivono configurazioni che utilizzano più origini dati, ad esempio oci_identity_availability_domains, assicurarsi di tenere conto di un singolo dominio, se richiesto dalla propria area.

Nell'esempio riportato di seguito viene utilizzata l'origine dati oci_identity_availability_domains quando si elencano i domini di errore in un'area del dominio a disponibilità singola. L'indice availability_domains deve essere 0. Qualsiasi altro valore di indice non è valido in questa area:

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}"
}

Il riferimento completo delle risorse e delle origini dati supportate del provider Terraform OCI contiene dettagli su uso, argomento e attributo. Il riferimento completo è disponibile sul sito docs.oracle.com e nel registro Terraform.