附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 Terraform 設定專用 DNS 區域、視觀表及解析器,以加速 OCI 專業架構師認證
簡介
獲得 Oracle Cloud Infrastructure (OCI) 專業架構師認證需要對 Oracle Cloud 和實作體驗有深入的瞭解。本教學課程系列運用基礎架構即程式碼 (IaC) 與 Terraform 和 Ansible ,可加快您的旅程。
圖 1 說明要為 OCI 專業架構師認證實驗室 2:Oracle Cloud Infrastructure 專業架構師 (Oracle University Lab - 6h 14m) 部署的架構。
圖 1:用於建立專用 DNS 網域名稱的本機對等互連閘道 (LPG) 端點
專用 DNS 金鑰優點
專用 DNS 在管理和保護 OCI 資源方面提供了多項優點。這包括但不限於:
- 組織:使用偏好的網域名稱,以提供直觀且有組織的體驗。
- 安全:篩選及封鎖對特定網域的存取,以保護機密資源。
- 負載平衡:將流量分散到多個伺服器,以提升效能和可靠性。
- 混合環境和連線:促進 VCN 內外的雲端無縫通訊,以及內部部署網路和 OCI 資源之間的無縫通訊。
我們將深入探討如何運用 OCI 的專用 DNS 管理自訂網域,以及跨網路連接資源。您將學習建立私有區域、定義記錄和配置解析器以供內部使用,從而精細控制 OCI 內的資源存取。
七項任務的半自動化方法
本教學課程將引導您透過專用 DNS 解析,將 OCI 中的可擴展和多 VCN 環境自動化。使用 OCI 主控台、Terraform 和 Ansible,您將會建立兩個 VCN、在它們之間建立本機對等互連閘道 (LPG)、啟動虛擬機器 (VM) 執行處理、設定自訂專用 DNS 區域,以及在設定 VCN 解析器之前和之後完整測試 DNS 解析。最後,您將擁有功能完整的多 VCN 環境,可在整個網路中使用專用 DNS 功能。
目標
這是以下教學課程 1 之系列的第二個教學課程:實驗室 1:使用 Terraform 加速 Oracle Cloud Infrastructure 專業架構師認證,以加速您的 OCI 專業架構師認證 (2024) 準備。我們運用 IaC 原則搭配 Terraform 和 Ansible,專注於與此考試相關的核心 DNS 概念。雖然認證上機實作實驗室:實驗室 2:Oracle Cloud Infrastructure 專業架構師 (Oracle University Lab - 6h 14m) 是全方位的,但實驗室 2 可能耗時,需要超過 30 分鐘手動完成。如教學課程 1 所示,自動化例行性工作,例如建立 VCN、公用和專用子網路、LPG 和 VM,大幅減少超過 80% 的完成時間:使用 Terraform 加速 Oracle Cloud Infrastructure 專業架構認證,讓您專注於掌握核心 OCI DNS 概念。
必要條件
-
熟悉 IaC 原則、Terraform、Ansible 以及 Oracle Cloud Infrastructure OCI Command Line Interface (OCI CLI) 。
-
瞭解如何使用 Terraform 模組佈建 OCI 基礎架構。如需更多資訊,請參閱 Reuse Configuration with Modules 。
-
使用 OCI Cloud Shell 、Oracle Resource Manager (ORM) 或 IDE (例如 Visual Studio)。
-
完成最後一個實驗室: OCI 專業架構師認證,並瞭解如何使用 ORM 建立 VCN Terraform 組態。
作業 1:建立兩個虛擬雲端網路
手動選項:
您可以使用 OCI 主控台手動建立 VCN。若要指示手動建立,必須將 is_vcn1_created
和 is_vcn2_created
旗標初始化成 false
。
若要建立 VCN、網際網路閘道、路由表、安全清單、公用和專用子網路等核心網路資源,請參閱虛擬網路快速入門。
圖 2:收集 VCN-01/VCN-02 OCID 和 VCN-01 公用子網路 OCID 的主控台檢視
前往 OCI 主控台,瀏覽至網路、虛擬雲端網路,檢視 VCN-01 的詳細資訊,注意其 OCID 及其公用子網路的 OCID。對 VCN-02 執行相同動作、記下其 OCID,然後將收集的 OCID 新增至您的 Terraform 組態檔 (input.auto.tfvars
或 variables.tf
)。
# Create VCN-01 and VCN-02 with OCI VCN Wizard (set is_vcn1_created and is_vcn2_created to false)
is_vcn1_created = false
is_vcn2_created = false
# Update VCN-01 OCID and its Public Subnet OCID, as well as VCN-02 OCID
vcn1_id = "REPLACE_CREATED_VCN1_OCID_HERE"
public_subnet1_id = "REPLACE_CREATED_PUBLIC_SUBNET1_OCID_HERE"
vcn2_id = "REPLACE_CREATED_VCN2_OCID_HERE"
自動化選項:
我們還提供兩種自動化選項來建立 VCN (VCN-01
和 VCN-02
):一種根模組方法和一種子項模組方法。第一部分更簡單,適合開發和測試或單次 VCN 部署。第二種方案為大型、複雜的部署提供更佳的組織和擴展性,促進程式碼重複使用性和可維護性,使其適用於生產環境。
若要指示 Terraform 建立 VCN,您必須先在 input.auto.tfvars
中將 is_vcn1_created
和 is_vcn2_created
旗標設為 true
,或將 variables.tf
中的預設值設為預設值。然後指定 VCN CIDR 區塊 (vcn?_cidr_block
)、公用子網路 CIDR 區塊 (public_subnet?_cidr_block
)、專用子網路 CIDR 區塊 (private_subnet?_cidr_block
) 及主機名稱前置碼 (host_name?_prefix
)。變數名稱會透過使用問號 (?
) 作為預留位置來抽象化。將 ?
取代為 1 或 2,將分別為 VCN-01 和 VCN-02 定義不同的組態。
您也必須定義特定變數的值:oci_regions
(將區域識別碼對應至索引鍵)、network_deployment_option
(TF-ROOT-MODULE
或 TF-CHILD-MODULE
) 及 dipslay_name_prefix
(例如,AP-Lab-02-1
)。最終 VCN 顯示名稱包含 network_deployment_option
值以產生完整名稱 (例如 PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
)。
-
方法 1:Terraform 根模組
針對此方法,我們已經簡化了 Terraform 組態。我們已將
network.tf
檔案從教學課程 1 複製:使用 Terraform 加速 Oracle Cloud Infrastructure Architect Professional 認證到根模組內名為lab02-demo-flat/
的子目錄中。此目錄使用network1.tf
和network2.tf
這兩個不同的檔案來自動建立 VCN-01 和 VCN-02 ,以便於進行測試及瞭解。# Network Deployment Methods (Root Module) network_deployment_option = "TF-ROOT-MODULE" # For testing and PoC only # Turn flags on to instruct Terraform to create VCN-02 and VCN-02 is_vcn1_created = true is_vcn2_created = true # Networking parameters: CIDR Blocks and Host Name prefix vcn1_cidr_block = "10.0.0.0/16" vcn2_cidr_block = "172.0.0.0/16" public_subnet1_cidr_block = "10.0.0.0/24" public_subnet2_cidr_block = "172.0.0.0/24" private_subnet1_cidr_block = "10.0.1.0/24" private_subnet2_cidr_block = "172.0.1.0/24" host_name_prefix = "<RegionKey>apl2" # Same prefix VCN-01/02
-
方法 2:Terraform 子項模組
您也可以使用
lab02-demo-module/
目錄中預先建立的 Terraform 模組,此目錄會將根模組的network.tf
檔案轉換成符合 IaC 最佳做法的子項模組。或者,您可以從公用儲存區域 (例如 Oracle Cloud Infrastructure Provider 、OCI GitHub (terraform-provider-OCI) 或內部 Oracle 模組 (例如 OCI Live Labs 中提供的模組) 使用預先建立的 Terraform 模組。設定
network_deployment_option
值以反映使用子項模組方法。network_deployment_option = "TF-CHILD-MODULE" # IaC Best Practice for Production.
# Module Call to Create VCN-01 module "vcn-01" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-01" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn1_cidr_block public_subnet_cidr_block = var.public_subnet1_cidr_block private_subnet_cidr_block = var.private_subnet1_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}1" } # Module Call to Create VCN-02 module "vcn-02" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-02" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn2_cidr_block public_subnet_cidr_block = var.public_subnet2_cidr_block private_subnet_cidr_block = var.private_subnet2_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}2" }
工作 2:建立兩個本機對等互連閘道
手動選項:
若要手動在 OCI 中建立 LPG,請參閱建立本機對等互連閘道。在此情況下,請將組態檔 (input.auto.tfvars
或 variables.tf
) 中的 is_lpg1_created
和 is_lpg2_created
旗標設為 false
。
自動化選項:
若要使用 Terraform 自動執行工作,請將這些旗標設為 true
。這會指示 Terraform 建立 LPG-01 及 LPG-02 。
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
下列 Terraform 程式碼片段會同時建立 LPG-01 和 LPG-02 ,並建立它們之間的對等互連關係,讓您的 VCN 之間能夠進行專用連線。
# LPG-01 Creation
resource "oci_core_local_peering_gateway" "lpg-01" {
count = (var.is_vcn1_created && var.is_lpg1_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-01" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-01"
vcn_id = var.is_vcn1_created ? module.vcn-01.vcn_ocid : var.vcn1_id
}
# LPG-02 Creation
resource "oci_core_local_peering_gateway" "lpg-02" {
depends_on = [oci_core_local_peering_gateway.lpg_01]
count = (var.is_vcn2_created && var.is_lpg2_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-02" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-02"
vcn_id = var.is_vcn2_created ? module.vcn-02.vcn_ocid : var.vcn2_id
# Peering lpg-02 with lpg-01
peer_id = oci_core_local_peering_gateway.lpg_01[count.index].id
}
作業 3:啟動虛擬機器執行處理
手動選項:
若要透過 OCI 主控台手動啟動 VM 執行處理,請參閱建立執行處理。
自動化選項:
我們將使用教學課程 1 的簡化版 Terraform 程式碼,提供 VM 佈建自動化:使用 Terraform 加速 Oracle Cloud Infrastructure 專業架構師認證。若要指示 Terraform 建立虛擬機器 VM-01 ,請將 is_instance_created
旗標設為 true
。如果使用 Terraform 建立 VCN,VM 的顯示名稱將會包含 network_deployment_option
設定 (例如 PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
或 PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
)。
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
下列 Terraform 程式碼會自動建立 VM-01 ,如 VCN-01 公用子網路中的圖 1 所示。
resource "oci_core_instance" "this" {
count = (var.is_instance_created) ? 1 : 0
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
compartment_id = var.compartment_id
create_vnic_details {
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.is_vcn1_created ? module.vcn-01.public_subnet_ocid : var.public_subnet1_id
}
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-VM-0${count.index + 1}" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-VM-0${count.index + 1}"
instance_options {
are_legacy_imds_endpoints_disabled = "false"
}
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = var.shape_name
shape_config {
memory_in_gbs = var.shape_memory_in_gbs
ocpus = var.shape_numberof_ocpus
}
source_details {
source_id = var.image_ids[var.region]
source_type = "image"
}
}
作業 4:建立 VCN-01 和 VCN-02 的自訂專用區域
OCI 的專用 DNS 區域會儲存內部 DNS 記錄,只能在 VCN 內存取。為了瞭解 DNS 概念,我們會先顯示如何手動建立兩個自訂專用區域。圖 3 說明在 VCN-01 (PHX-AP-LAB02-1-VCN-01
) 中建立專用 DNS 區域 zone-a.local
,並在其中新增 record
。
圖 3:建立專用 DNS 區域並將其與 VCN-01 關聯,然後新增記錄至區域
手動選項:
-
建立並設定 VCN-01 的專用 DNS 區域 (
zone-a.local
)。-
移至 OCI 主控台,瀏覽至網路、DNS 管理、區域,然後按一下專用區域。
-
按一下建立區域,輸入區域名稱 (
zone-a.local
),選取選取現有 DNS 專用檢視,選取PHX-AP-LAB02-1-VCN-01
作為關聯的 VCN,然後按一下建立。 -
建立區域之後,檢視自動產生的 NS 和 SOA 記錄。
-
按一下管理記錄,然後選取新增記錄。
-
輸入下列資訊,然後按一下新增記錄。
- 名稱:輸入
server01
。 - 類型:選取
A - IPv4 Address
。 - TTL:輸入
30 seconds
(視需要解除鎖定欄位)。 - 地址:輸入
10.0.0.2
。
- 名稱:輸入
-
按一下發佈變更和確認發佈變更。
備註:等待作業順利完成 (狀態已從 UPDATING 變更為 ACTIVE)。
-
-
建立並設定 VCN-02 的專用 DNS 區域 (
zone-b.local
)。請依照與圖 3 相同的步驟,為 VCN-02 建立專用區域 (PHX-AP-LAB02-1-VCN-02
)。-
瀏覽至區域的專用區域,按一下建立區域。
-
輸入名稱作為
zone-b.local
,選取選取現有的 DNS 專用檢視,選取PHX-AP-LAB02-1-VCN-02
作為關聯的 VCN,然後按一下建立。 -
按一下管理記錄,然後選取新增記錄。
-
輸入下列資訊,然後按一下新增記錄。
- 名稱:輸入
server01
。 - 類型:選取
A - IPv4 Address
。 - TTL:輸入
60 seconds
(視需要解除鎖定欄位)。 - 地址:輸入
172.16.0.123
。
- 名稱:輸入
-
按一下發佈變更和確認發佈變更。
注意:如果您略過手動建立步驟,會導致錯誤,例如:
zone not found: 3 (NXDOMAIN)
。
-
自動化選項:
本教學課程也提供使用 Ansible 的進階自動化方法。Ansible 是一項開放原始碼自動化工具,可管理您的基礎架構組態。在此相關資訊環境中,Ansible 手冊是一組可自動建立專用 DNS 區域的工作集合。如需詳細資訊,請參閱 Ansible Playbook Keywords 。
將 input.auto.tfvars
或 variabes.tf
中的 is_task4_automated
設為 true
,以觸發 playbooks.sh
中的 Ansible playbook
執行,在單一執行中同時自動建立專用 DNS 區域和新增記錄。
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
使用 Terraform 的 local-exec
啟動設定程式,您可以執行 Ansible 手冊,在 VCN-02 的 VCN-01 和 zone-b.local
區域中自動建立 zone-a.local
及其個別的 records
。如需詳細資訊,請參閱來源代碼:oci-ansible-collection 。
# Create 2 Custom Private Zones and Associated Records in OCI
resource "null_resource" "ansible-create-zones-playbook" {
count = (var.is_task4_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/playbooks.sh"
}
}
作業 5:測試關聯區域 A 的執行處理
手動選項:
手動 SSH 登入 VM 執行處理,以確認您的 VM 執行處理是否與 zone-a.local
關聯。
-
使用公用 IP 位址進入執行處理的 SSH。
ssh -i <private_ssh_key> <public_ip_address>
-
查詢
server01.zone-a.local
的 DNS 記錄。host server01.zone-a.local
預期的輸出:
server01.zone-a.local has address 10.0.0.2
-
驗證系統產生的區域項目。
host -t NS zone-a.local
預期的輸出:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
驗證區域的授權記錄。
host -t SOA zone-a.local
預期的輸出:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
根據關聯的 VCN 檢視,觀察 DNS 解析的差異。
host server01.zone-b.local
預期的輸出:
server01.zone-b.local not found: 3 (NXDOMAIN)
輸出指示
zone-b.local
未與任何 VCN 檢視關聯。
自動化選項:
將 is_test_instance_associated_zone_a
旗標設為 true
以指示 Terraform 測試 VM-01
與 zone-a.local
的關聯。
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
下列 Terraform 程式碼使用 remote-exec
啟動設定程式來自動測試 VM-01 區域關聯。
resource "null_resource" "dns_test_1" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key) # Avoid exposing SSH keys directly
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 1 - Instance Associated Zone-A\"",
"echo \"1. Successful SSH to the instance using public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-a.local.\"",
"host server01.zone-a.local",
"echo \"3. Verify the system-generated zone entry.\"",
"host -t NS zone-a.local",
"echo \"4. Verify the authority record for the zone.\"",
"host -t SOA zone-a.local",
"echo \"5. Observe the difference in DNS resolution based on the associated VCN views.\"",
"host server01.zone-b.local",
"echo \"End Test 1 - Instance Associated Zone-A\"", ]
}
}
作業 6:設定 VCN 解析器及新增其他專用檢視
手動選項:
若要手動設定 VCN 解析器,請瀏覽至 OCI 主控台的 VCN-01 詳細資訊頁面,選取 VCN 解析器和專用檢視。
從下拉式功能表中選取 VCN-02 ,然後按一下儲存以儲存變更。等待專用解析器詳細資訊頁面狀態從 UPDATING 變更為 ACTIVE 。
自動化選項:
為了將 VCN 解析器組態自動化,我們利用 Terraform 的 local-exec
佈建器執行 OCI CLI、Ansible 手冊或 Terraform 模組。
將 is_task6_automated
旗標設為 true
以指示 Terraform。
is_task6_automated = true
提供的 bash 命令檔 update_resolver.sh
會標示出更新 VCN-01 專用解析器的步驟,並將 VCN-02 關聯為 DNS 專用檢視。此外,此處提供適用於 OCI 的混合 Terraform DNS 組態範例: terraform-OCI-hybrid-dns 。
# Task 6: Configure the VCN Resolver, adding the Other Private View
resource "null_resource" "run-get-resolver" {
count = (var.is_task6_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/update_resolver.sh"
}
}
作業 7:測試關聯區域 B 的執行處理
手動選項:
設定 VCN 解析器之後,請檢查伺服器是否正確解析。
-
使用公用 IP 位址進入執行處理的 SSH。
ssh -i <private_ssh_key> <public_ip_address>
-
查詢
server01.zone-a.local
的 DNS 記錄。host server01.zone-b.local
預期的輸出:
server01.zone-b.local has address 172.16.0.123
注意:如果 DNS 解析失敗,請稍候幾分鐘,變更才會生效。如有需要,請重新啟動執行處理。
自動化選項:
將 is_test_instance_associated_zone_b
旗標設為 true
,即可指示 Terraform 測試 VM-01 與第二個 VCN (VCN-02) 中第二個區域 (zone-b.local
) 的關聯。
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
下列程式碼使用 Terraform 的 remote-exec
啟動設定器來自動化測試,驗證 VM 執行處理與 zone-b.local
的關聯。
resource "null_resource" "dns_test_2" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 2 - Instance Associated Zone-B\"",
"echo \"1. Successfull SSH into the instance using its public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-b.local.\"",
"host server01.zone-b.local",
"echo \"End Test 2 - Instance Associated Zone-B\"" ]
}
}
部署選項
我們將探索兩個部署選項:
-
Oracle Resource Manager (ORM),提供容易操作的介面與引導式工作流程。
-
Terraform CLI (Community Edition),透過宣告式組態檔提供可彈性且可擴展的 Lab 2 資源管理。
To provision Lab 2 resources (VCN-01/VCN-02, LPG-01/LPG-02, and VM-01) and trigger the required tests, you need to provide default values for: image OCIDs map for each used region (image_ids
), compartment OCID (compartment_id
), display name prefix (display_name_prefix
), networking (is_vcn1_created
, is_vcn2_created
, is lpg1_created
, is_lpg2_created
, vcn_1_id
, vcn_2_id
, and public_subnet1_id
), compute instance (is_instance_created
, shape_name
), and testing flags for instance and zone associations (is_test_instance_associated_zone_a
and is_test_instance_associated_zone_b
).
選項 1:使用 Oracle 資源管理程式 (ORM)
圖 4 顯示建立 Lab 2 資源的 ORM 堆疊。
圖 4:Oracle 資源管理程式 - 建立 Lab2 堆疊 (VCN-01、VCN-02、LPG-01 和 LPG-02、VM-01)
Terraform 會以七個步驟將基礎架構佈建自動化,如圖 5 所示:分析來源組態、建置 Terraform 樣板套裝程式、提供預設變數值、建立 ORM 堆疊、規劃變更、套用這些變更來佈建 OCI 中的資源,以及選擇性地毀棄資源。整合 DevOps CI/CD 工具 (例如 Jenkins 或 OCI DevOps) 可將整個流程自動化,提供方便且接近單鍵解決方案。
圖 5:Oracle 資源管理程式堆疊工作流程 (建立、計畫、套用及毀棄)
選項 2:使用 Terraform 指令行介面 (CLI) (Community Edition)
Terraform CLI 是功能強大的基礎架構即程式碼工具,可透過宣告式組態檔彈性且可擴展的雲端資源管理。從此處下載 Terraform 程式碼: OCI-blog-fast-tracking-apcertif-part2.zip ,並使用您的 OCI 詳細資訊 (compartment_id
、image_ids
) 自訂 input.auto.tfvars
檔案,然後依照 README.md
中的指示設定環境,執行 terraform init
、terraform plan
以及 terraform apply
命令以完成 Lab 2。
我們已針對每個預先設定所需 Terraform 旗標的工作包含 bash 命令檔,減少點擊次數和完成時間。這些指令檔提供多個層級的彈性:
-
循序執行:從「工作 1」開始到「工作 3」(
run_task1-3.sh
和run_task4.sh
),然後繼續進行「工作 7」(run_task6-7.sh
)。 -
自訂順序:您可以在任務 1 到 3 之後暫停、手動完成任務 4、使用 Terraform 繼續任務 5,然後手動執行任務 6,並使用後續指令碼完成任務 7。
-
混合執行:自動執行工作 1 到 5 (
run_task1-3.sh
、run_task4.sh
、run_task5.sh
),然後利用run_taks6-7.sh
中的互動暫停,直到工作 6 在 OCI 主控台上手動完成為止,再繼續命令檔以自動完成工作 7。 -
完全自動化:您可以將這些任務整合至 CI/CD 管線,以便在 DevOps 生產環境中進行一鍵執行。
本質上,此套件提供設定專用 DNS、簡化實驗室 2 的指南和最佳做法,並確保使用 OCI DNS 的順暢學習體驗。
##########################################################################
# Terraform module: Configuring Private DNS Zones, Views, and Resolvers. #
# File Name: input.auto.tfvars #
# Copyright (c) 2024 Oracle Author: Mahamat H. Guiagoussou. #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WITH_YOUR_WORKING_COMPARTMENT_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB02-1" # Replace with your prefix
# TASK 1 - Create 2 VCNs (VCN-01 and VCN-02) manually using the OCI
# VCN Wizard (semi automated option) or Terraform (Root or Child)
# Turn flags off to indicate VCN-01 and VCN-02 are not created with TF
#is_vcn1_created = false # Set to 'false' to create VCN-01
#is_vcn2_created = false # Set to 'false' to create VCN-02
# After Creating VCN-01 & VCN-02 with VCN Wizard, updae OCIDs
vcn_id = "REPLACE_VCN1_OCID_HERE"
vcn_id = "REPLACE_VCN2_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_VCN1_SUBNET_OCID_HERE"
# Create VCN-01 and VCN-02 with Terraform. Use only one of 2 options:
# (1) Root Module - Dupplicated code ("network1.tf" & "network2.tf")
# (2) Child Module - Use an existing Terraform Network Module.
# Network Deployment Options (Root Module)
network_deployment_option = "TF-ROOT-MODULE" # "TF-CHILD-MODULE"
# Turn flags on to instruct Terraform to create VCN-02 and VCN-02
is_vcn1_created = true # Set to 'true' to create VCN-01
is_vcn2_created = true # Set to 'true' to create VCN-02
# Networking parameters: CIDR Blocks and Host Name prefix
vcn1_cidr_block = "10.0.0.0/16"
vcn2_cidr_block = "172.0.0.0/16"
public_subnet1_cidr_block = "10.0.0.0/24"
public_subnet2_cidr_block = "172.0.0.0/24"
private_subnet1_cidr_block = "10.0.1.0/24"
private_subnet2_cidr_block = "172.0.1.0/24"
host_name_prefix = "<region-key>apl1"
# Task 2: Create two(2) Local Peering Gateways (LPG-01 & LPG-02)
is_lpg1_created = false
is_lpg2_created = false
# Task 3: Launch a VM (VM-01) in the public subnet
is_instance_created = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# SSH keys
ssh_public_key = "REPLACE_SSH_PUBLIC_KEY_PATH"
ssh_private_key = "REPLACE_SSH_PRIVATE_KEY_PATH"
# Task 4: Create and Configure OCI Private Zones (zone-a/b.local)
is_task4_automated = false
# Task 5: Test your instance for Associated Zone A.
is_test_instance_associated_zone_a = false
# Task 6: Configure the VCN Resolver, adding the Other Private View.
is_task6_automated = false
# Task 7: Test your Instance for Associated Zone B.
is_test_instance_assoracle = false
本教學課程提供全方位的方法,讓您在 Oracle Cloud Infrastructure (OCI) 中設定專用 DNS 區域、視觀表及解析器。它提供手動和自動化方法來建立、設定和測試這些元件。這種實作、半自動化的方法可確保您確實瞭解 OCI 中不同 VCN 的 DNS 解析度。
透過七項工作,您建立了兩個 VCN (即已建立的 LPG)、啟動 VM、設定兩個自訂 DNS 區域,以及在將第二個 VCN 新增為第一個 VCN 的 DNS 解析器相關專用檢視之前和之後的已驗證 VM DNS 關聯。
接下來的步驟
透過使用基礎架構即程式碼 IaC 工具 (例如 Terraform、Ansible、Oracle Resource Manager ORM 以及 OCI CLI bash shell 命令檔編寫) 自動佈建 OCI 基礎架構,此教學課程可協助 OCI Architect Professional 認證 (2024) 候選人加速複雜的工作,例如 Lab 2 DNS 組態中的工作,從 30 分鐘到僅 5 分鐘。此時間效率可提升人為錯誤、降低資源管理成本,以及大規模提高成功率。
瞭解 Terraform 和 Ansible,然後利用 ORM、OCI CLI 和 bash 命令檔來探索最佳的 IaC 做法,以進行有效的 OCI 基礎架構管理。
相關連結
認可
- 作者 - Mahamat H。Guiagoussou (主要雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19553-01
November 2024