注意:

配置专用 DNS 区域、视图和解析器,以通过 Terraform 加速 OCI Architect Professional 认证

简介

要获得 Oracle Cloud Infrastructure (OCI) Architect Professional 认证,您需要深入了解 Oracle Cloud 和实际操作体验。本教程系列将基础设施即代码 (IaC)TerraformAnsible 结合使用,从而加速您的旅程。

图像

图 1 说明了为 OCI Architect Professional 认证练习 2:Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) 部署的体系结构。

图像 图 1:用于创建专用 DNS 域名的本地对等连接网关 (LPG) 端点

专用 DNS 主要优势

专用 DNS 在管理和保护 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 核心概念。

先决条件

任务 1:创建两个虚拟云网络

手动选项:

您可以使用 OCI 控制台手动创建 VCN。要指示手动创建,is_vcn1_createdis_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.tfvarsvariables.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-01VCN-02):根模块方法和子模块方法。第一种方法更简单,适用于开发和测试或一次性 VCN 部署。第二种方法为大型复杂部署提供了更好的组织和可扩展性,提高了代码可重用性和可维护性,使其成为生产环境的理想选择。

要指示 Terraform 创建 VCN,首先需要在 input.auto.tfvars 中将 is_vcn1_createdis_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-01VCN-02 定义单独的配置。

您还需要定义特定变量的值:oci_regions(将区域标识符映射到密钥)、network_deployment_optionTF-ROOT-MODULETF-CHILD-MODULE)和 dipslay_name_prefix(例如 AP-Lab-02-1)。最终 VCN 显示名称包括用于生成综合名称的 network_deployment_option 值(例如 PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01)。

任务 2:创建两个本地对等连接网关

手动选项:

要在 OCI 中手动创建 LPG,请参见 Creating a Local Peering Gateway 。在这种情况下,请在配置文件(input.auto.tfvarsvariables.tf)中将 is_lpg1_createdis_lpg2_created 标志设置为 false

自动选项:

要使用 Terraform 自动执行任务,请将这些标志设置为 true。这将指示 Terraform 创建 LPG-01LPG-02

# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true

以下 Terraform 代码片段可创建 LPG-01LPG-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-01PHX-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 关联,然后向该区域添加新记录

手动选项:

  1. VCN-01 (zone-a.local) 创建和配置专用 DNS 区域。

    1. 转到 OCI 控制台,导航到网络DNS 管理区域,然后单击专用区域

    2. 单击创建区域,输入区域名称 (zone-a.local),选择选择现有 DNS 专用视图,将 PHX-AP-LAB02-1-VCN-01 作为关联的 VCN,然后单击创建

    3. 创建区域后,查看自动生成的 NSSOA 记录。

    4. 单击管理记录,然后选择添加记录

    5. 输入以下信息,然后单击添加记录

      • 名称:输入 server01
      • 类型:选择 A - IPv4 Address
      • TTL:输入 30 seconds(如有必要,取消锁定该字段)。
      • 地址:输入 10.0.0.2
    6. 单击 Publish Changes(发布更改)Confirm Publish Changes(确认发布更改)

      注:等待操作成功完成(状态从 UPDATING 更改为 ACTIVE )。

  2. VCN-02 (zone-b.local) 创建和配置专用 DNS 区域。按照与图 3 相同的步骤为 VCN-02 创建专用区域 (PHX-AP-LAB02-1-VCN-02)。

    1. 导航到 Zones(区域)Private Zones(专用区域),单击 Create Zone(创建区域)

    2. Name(名称)中输入 zone-b.local,选择 Select existing DNS Private View(选择现有 DNS 专用视图),选择 PHX-AP-LAB02-1-VCN-02 作为关联的 VCN,然后单击 Create(创建)

    3. 单击管理记录,然后选择添加记录

    4. 输入以下信息,然后单击添加记录

      • 名称:输入 server01
      • 类型:选择 A - IPv4 Address
      • TTL:输入 60 seconds(如有必要,取消锁定该字段)。
      • 地址:输入 172.16.0.123
    5. 单击 Publish Changes(发布更改)Confirm Publish Changes(确认发布更改)

      注:如果跳过手动创建步骤,则会导致以下错误:zone not found: 3 (NXDOMAIN)

自动选项:

本教程还提供了使用 Ansible 的高级自动化方法。Ansible 是一种开源自动化工具,用于管理基础设施的配置。在这种情况下,Ansible 手册是自动创建专用 DNS 区域的任务的集合。有关详细信息,请参阅 Ansible Playbook Keywords

input.auto.tfvarsvariabes.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 关联。

  1. 通过 SSH 连接到具有公共 IP 地址的实例。

    ssh -i <private_ssh_key> <public_ip_address>
    
  2. 查找 server01.zone-a.local 的 DNS 记录。

    host server01.zone-a.local
    

    预期输出:

    server01.zone-a.local has address 10.0.0.2
    
  3. 验证系统生成的区域条目。

    host -t NS zone-a.local
    

    预期输出:

    zone-a.local has NS record vcn-dns.oraclevcn.com.
    
  4. 验证区域的授权记录。

    host -t SOA zone-a.local
    

    预期输出:

    zone-a.local has SOA record ven-dns.oraclevcn.com.
    hostmaster.oracle.com. 2 3600 3600 3600 10
    
  5. 根据关联的 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-01zone-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 解析程序后服务器是否已正确解析。

  1. 通过 SSH 连接到具有公共 IP 地址的实例。

    ssh -i <private_ssh_key> <public_ip_address>
    
  2. 查找 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\""    ]
  }
}

部署选项

我们将探讨两个部署选项:

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 工具(例如 JenkinsOCI DevOps )可以自动执行整个流程,从而提供方便、接近一键式解决方案。

图像 图 5:Oracle Resource Manager 堆栈工作流(创建、计划、应用和销毁)

选项 2:使用 Terraform 命令行界面 (Community Edition,CLI)

Terraform CLI 是一款功能强大的基础设施即代码工具,支持您通过声明式配置文件灵活地管理云资源。从此处下载 Terraform 代码: OCI-blog-fast-tracking-apcertif-part2.zip 并使用您的 OCI 详细信息(compartment_idimage_ids)定制 input.auto.tfvars 文件,并按照 README.md 中的说明设置环境,运行 terraform initterraform planterraform apply 命令以完成实验室 2。

我们为预设置所需 Terraform 标志的每个任务提供了 bash 脚本,可减少点击和完成时间。这些脚本具有多种灵活性:

本质上,此程序包提供了用于配置专用 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 实践。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心