注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
配置专用 DNS 区域、视图和解析器,以通过 Terraform 加速 OCI Architect Professional 认证
简介
要获得 Oracle Cloud Infrastructure (OCI) Architect Professional 认证,您需要深入了解 Oracle Cloud 和实际操作体验。本教程系列将基础设施即代码 (IaC) 与 Terraform 和 Ansible 结合使用,从而加速您的旅程。
图 1 说明了为 OCI Architect Professional 认证练习 2:Oracle Cloud Infrastructure Architect Professional (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 Architect Professional 认证,以加速 OCI Architect Professional 认证 (2024) 准备。我们将 IaC 原则与 Terraform 和 Ansible 结合使用,重点介绍与考试相关的核心 DNS 概念。虽然认证动手实验室全面,但实验室 2 却非常耗时,需要 30 分钟才能手动完成。实验室 2:Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m)自动化创建 VCN、公共和专用子网、LPG 和 VM 等日常任务,可显著缩短完成时间超过 80%,如教程 1 中所示:使用 Terraform 加速 Oracle Cloud Infrastructure Architect Professional 认证,让您专注于掌握 OCI DNS 核心概念。
先决条件
-
熟悉 IaC 原则、Terraform、Ansible 和 Oracle Cloud Infrastructure OCI 命令行界面 (OCI CLI) 。
-
了解如何使用 Terraform 模块来预配 OCI 基础设施。有关更多信息,请参见 Reuse Configuration with Modules 。
-
使用 OCI Cloud Shell 、Oracle Resource Manager (ORM) 或 IDE(例如 Visual Studio )。
-
完成上一个实验室: OCI Architect Professional 认证,并了解如何使用 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 配置。我们已将教程 1 中的
network.tf
文件使用 Terraform 加速 Oracle Cloud Infrastructure Architect Professional Certification 复制到根模块中名为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 提供程序、OCI GitHub (terraform-provider-OCI) )或内部 Oracle 模块(例如 OCI Live Labs 中提供的模块)的预构建 Terraform 模块。设置
network_deployment_option
值以反映 Child Module 方法的使用。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,请参见 Creating a Local Peering Gateway 。在这种情况下,请在配置文件(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 实例,请参见 Creating an Instance 。
自动选项:
我们将使用教程 1 中的简化版 Terraform 代码自动执行 VM 预配:通过 Terraform 加速 Oracle Cloud Infrastructure Architect Professional 认证。要指示 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 ,如图 1 中 VCN-01 公共子网中所示。
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 (
zone-a.local
) 创建和配置专用 DNS 区域。-
转到 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
。
- 名称:输入
-
单击 Publish Changes(发布更改)和 Confirm Publish Changes(确认发布更改)。
注:等待操作成功完成(状态从 UPDATING 更改为 ACTIVE )。
-
-
为 VCN-02 (
zone-b.local
) 创建和配置专用 DNS 区域。按照与图 3 相同的步骤为 VCN-02 创建专用区域 (PHX-AP-LAB02-1-VCN-02
)。-
导航到 Zones(区域)、 Private Zones(专用区域),单击 Create Zone(创建区域)。
-
在 Name(名称)中输入
zone-b.local
,选择 Select existing DNS Private View(选择现有 DNS 专用视图),选择PHX-AP-LAB02-1-VCN-02
作为关联的 VCN,然后单击 Create(创建)。 -
单击管理记录,然后选择添加记录。
-
输入以下信息,然后单击添加记录。
- 名称:输入
server01
。 - 类型:选择
A - IPv4 Address
。 - TTL:输入
60 seconds
(如有必要,取消锁定该字段)。 - 地址:输入
172.16.0.123
。
- 名称:输入
-
单击 Publish Changes(发布更改)和 Confirm Publish Changes(确认发布更改)。
注:如果跳过手动创建步骤,则会导致以下错误:
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-01 中创建 zone-a.local
,在 VCN-02 中创建 zone-b.local
区域,并使用各自的 records
。有关更多信息,请参见 Source Code: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
关联。
-
通过 SSH 连接到具有公共 IP 地址的实例。
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 解析程序后服务器是否已正确解析。
-
通过 SSH 连接到具有公共 IP 地址的实例。
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),通过声明式配置文件灵活且可扩展地管理实验室 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 Resource Manager (ORM)
图 4 显示了创建实验室 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 Resource Manager 堆栈工作流(创建、计划、应用和销毁)
选项 2:使用 Terraform 命令行界面 (Community Edition,CLI)
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
命令以完成实验室 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
中的交互暂停,直到在 OCI 控制台上手动完成任务 6,然后再恢复脚本以自动完成任务 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 作为关联的专用视图添加到第一个 VCN 的 DNS 解析程序之前和之后,创建了两个 VCN、建立了 LPG、启动了 VM、配置了两个定制 DNS 区域并验证了 VM DNS 关联。
后续步骤
通过使用基础设施即代码 IaC 工具(例如 Terraform、Ansible、Oracle Resource Manager ORM 和 OCI CLI bash shell 脚本)自动预配 OCI 基础设施,本教程可帮助 OCI Architect Professional Certification (2024) 候选者将复杂任务(例如 Lab 2 DNS 配置中的任务)从 30 分钟缩短到 5 分钟。这种时间效率可帮助企业减少人为错误、降低资源管理成本并大规模提高成功率。
了解 Terraform 和 Ansible,然后利用 ORM、OCI CLI 和 bash 脚本来探索有效的 OCI 基础设施管理的最佳 IaC 实践。
相关链接
确认
- 作者 -Mahamat H。Guiagoussou(首席云架构师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19552-01
November 2024