Fazendo Referência a Domínios de Disponibilidade
Use o provedor Terraform do Oracle Cloud Infrastructure para gerenciar domínios de disponibilidade.
Os exemplos nesta página usam a variável de compartimento
var.compartment_ocid
. Para especificar a tenancy ou o compartimento raiz, use a variável de tenancy, var.tenancy_ocid
.Em relação aos domínios de disponibilidade, evite o seguinte padrão:
// 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")}"
...
}
Em vez disso, recomendamos listar explicitamente os nomes de domínio de disponibilidade para as regiões em sua configuração. Para isso, use uma variável definida da seguinte forma:
variable "ad_list" {
type = list
}
Você poderá usar a variável conforme mostrado aqui:
// 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]}"
...
}
Em seguida, você poderá definir a variável ad_list
diretamente usando os nomes de domínios de disponibilidade para a sua tenant e a sua região, conforme mostrado aqui:
variable "ad_list" {
type = list
default = ["kIdk:PHX-AD-1","kIdk:PHX-AD-2","kIdk:PHX-AD-3"]
}
A vantagem de usar esse método é que ele oferece controle sobre o uso do domínio de disponibilidade e impede alterações inesperadas ao longo do tempo. No entanto, essa abordagem é problemática quando as configurações são compartilhadas entre tenancies e regiões, porque os nomes de domínios de disponibilidade são específicos para a tenancy e para a região.
Uma alternativa conveniente é definir o valor ad_list
usando a origem de dados oci_identity_availability_domains
. Faça isso na configuração e informe-os aos módulos. Isso centraliza efetivamente a lista de ADs, facilitando a alternância para uma lista explícita posteriormente, se necessário. (Nos próprios módulos, não use a origem de dados 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}"
...
}
Regiões com um Único Domínio de Disponibilidade
Algumas regiões do Oracle Cloud Infrastructure têm um único domínio de disponibilidade. Ao gravar configurações que usam várias origens de dados, como oci_identity_availability_domains
, certifique-se de considerar um único domínio, se exigido por sua região.
O exemplo a seguir usa a origem de dados oci_identity_availability_domains
ao listar domínios de falha em uma região de domínio de disponibilidade único. O índice availability_domains
deve ser 0
. Qualquer outro valor de índice é inválido nesta região:
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}"
}
A referência completa dos recursos e origens de dados suportados do provedor Terraform do OCI contém detalhes de uso, argumento e atributo. A referência completa está disponível em docs.oracle.com e Terraform Registry.