Availability-Domains referenzieren
Verwenden Sie den Oracle Cloud Infrastructure-Terraform-Provider, um Availability-Domains zu verwalten.
In Bezug auf Verfügbarkeitsdomänen sollte kein allgemeines Muster verwendet werden, wie hier dargestellt:
// Get all availability domains for the region
data "oci_identity_availability_domains" "ads" {
compartment_id = "${var.tenancy_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")}"
...
}
Stattdessen wird empfohlen, die Availability-Domainnamen für die Regionen in Ihrer Konfiguration explizit auflisten. Verwenden Sie dazu eine Variable, die Sie wie folgt definiert haben:
variable "ad_list" {
type = list
}
Sie können die Variable dann wie hier dargestellt verwenden:
// 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]}"
...
}
Sie können die Variable ad_list
dann direkt mit den Availability-Domainnamen für Ihren Mandanten und Ihre Region festlegen, wie hier dargestellt:
variable "ad_list" {
type = list
default = ["kIdk:PHX-AD-1","kIdk:PHX-AD-2","kIdk:PHX-AD-3"]
}
Der Vorteil dieser Methode besteht darin, dass Sie die Nutzung der Availability-Domain steuern und unerwartete Änderungen im Laufe der Zeit verhindern können. Dieser Ansatz ist jedoch problematisch, wenn Konfigurationen von Mandanten und Regionen gemeinsam verwendet werden, da Availability-Domainnamen mandanten- und regionsspezifisch sind.
Eine hilfreiche Alternative ist es, stattdessen den Wert für ad_list
festzulegen, indem Sie die Datenquelle oci_identity_availability_domains
verwenden. Führen Sie diesen Vorgang in der Konfiguration durch, und übergeben Sie ihn dann an die Module. Auf diese Weise wird die Liste der ADs zentralisiert, sodass Sie später einfach zu einer expliziten Liste wechseln können, falls dies erforderlich ist: Beachten Sie, dass die Module selbst die oci_identity_availability_domains
-Datenquelle nicht verwenden sollten.
data "oci_identity_availability_domains" "ad" {
compartment_id = "${var.tenancy_ocid}"
}
data "template_file" "ad_names" {
count = "${length(data.oci_identity_availability_domains.ad.availability_domains)}"
template = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
}
module "ssm_network" {
ad_list = "${data.template_file.ad_names.*.rendered}"
...
}
Regionen mit einer einzelnen Availability-Domain
Einige Oracle Cloud Infrastructure-Regionen verfügen über eine einzelne Availability-Domain. Wenn Sie Konfigurationen schreiben, die mehrere Datenquellen verwenden, wie oci_identity_availability_domains
, stellen Sie sicher, dass Sie eine einzelne Domain berücksichtigen, wenn Ihre Region erforderlich ist.
Im folgenden Beispiel wird die Datenquelle oci_identity_availability_domains
verwendet, wenn Faultdomains in einer Region mit einer einzelnen Availability-Domain aufgeführt werden. Der availability_domains
-Index muss 0
lauten. Jeder andere Indexwert ist in dieser Region ungültig:
data "oci_identity_availability_domains" "AvailabilityDomains" {
compartment_id = var.tenancy_ocid
}
data "oci_identity_fault_domains" "FaultDomains" {
availability_domain = data.oci_identity_availability_domains.AvailabilityDomains.availability_domains[0]["name"]
compartment_id = "${var.compartment_ocid}"
}
Die vollständige Referenz der unterstützten Ressourcen und Datenquellen des OCI-Terraform-Providers enthält Details zu Verwendung, Argumenten und Attributen. Die vollständige Referenz ist unter docs.oracle.com und Terraform Registry verfügbar.