浏览更多

了解有关 Oracle Cloud Infrastructure (OCI) 和 PeopleSoft 的更多信息。请参阅Oracle Cloud Infrastructure 优秀实践框架

查看以下 Oracle Cloud Infrastructure 文档资源:

查看以下内容,了解 Oracle Database 高可用性产品、功能和优秀实践:
了解有关 PeopleSoft 的详细信息:

有关 Terraform 命令行界面版本的安装和配置,请参阅:Terraform 提供程序

使用 Terraform

Terraform 搜索将发现主区域中区间内的资源定义。您可以从 OCI 控制台访问 Terraform Discovery。它将创建一个 Terraform 堆栈,保存在一个可下载的 ZIP 文件中。

此示例包含多个子网,每个子网包含一个或多个安全列表,并包含几个包含数十个入站规则的复杂安全列表。对于此案例研究,我们选择使用 Terraform 搜索网络区间中的资源,然后进行复制。

Terraform 发现了以下网络组件:
  • Virtual Cloud Network (VCN)
  • 网关(Internet、NAT 和服务网关)
  • 路由表
  • 安全列表
  • 子网

运行 Terraform 搜索

运行 Terraform 搜索以创建 Terraform 堆栈并下载 ZIP 文件。

  1. 登录到 OCI 控制台。
  2. 将该区域更改为主区域。
  3. 单击主菜单中的开发服务
  4. 资源管理器下,单击堆栈
  5. 单击创建堆栈
  6. 选择现有区间:创建堆栈来从所选区间中捕获资源(资源搜索)
  7. 选择要从中搜索资源的区间。
    用于资源搜索的区间中,展开根以获取区间的完整列表。例如,网络区间。
  8. 资源搜索的区域中选择 OCI 主区域。
  9. 为 Terraform Provider Services 选择全部
  10. 输入要创建的 ZIP 文件的名称和说明。
  11. 选择要在其中创建堆栈的区间。
  12. 单击下一步两次。
    此时将显示“复查”页。复核并根据需要进行更改。
  13. 单击创建
    堆栈创建作业完成后,堆栈将显示在您选择的区间中。
  14. 单击堆栈的链接。
    此时将显示堆栈详细信息页面。
  15. 单击 Terraform 配置上的下载链接可将堆栈 ZIP 文件下载到本地计算机。
  16. 将 ZIP 文件保存到目录并解压缩文件。

编辑 Terraform 文件

解压缩堆栈 ZIP 文件时,会发现多个 Terraform 文件的 JSON 格式,以 .tf 结尾。.tf 文件的内容取决于在区间中搜索到的资源。必须对 .tf 文件进行更改。例如,将 export_ 添加到所有资源定义,必须将其删除。使用网络搜索时,还必须分配其他且不重叠的 CIDR 块、提供新的显示名称、提供其他 DNS 标签并提供其他 VCN 引用。

大多数资源定义位于 core.tf JSON 文件中。

注意:

在对 .tf 文件进行更改之前,我们建议您备份它们。

下表显示了主要区域的 Terraform 定义示例以及辅助区域所需的更改。

资源类型 主要区域定义(阿什本) 辅助区域修改(菲尼克斯)
虚拟云网络
resource oci_core_vcn export_iad-cloudmaa-vcn {
  #cidr_block = <<Optional value not found in discovery>>
  cidr_blocks = [
    “10.0.0.0/16”,
  ]
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = “iad-cloudmaa-vcn”
  dns_label    = “iadcloudmaavcn”
  freeform_tags = {
  }
  #is_ipv6enabled = <<Optional value not found in discovery>>
}
必需的修改包括删除 export_、分配其他不重叠的 CIDR、显示名称以及更改 DNS 标签:
resource oci_core_vcn phx-cloudmaa-vcn {
  #cidr_block = <<Optional value not found in discovery>>
  cidr_blocks = [
    “10.10.0.0/16”,
  ]
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = “phx-cloudmaa-vcn”
  dns_label    = “phxcloudmaavcn”
  freeform_tags = {
  }
  #is_ipv6enabled = <<Optional value not found in discovery>>
}
NAT 网关网关
resource oci_core_nat_gateway export_iadmaa-ngwy {
  block_traffic  = “false”
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = “iadmaa-ngwy”
  freeform_tags = {
  }
  public_ip_id = “ocid1.publicip.oc1.iad.aaaaaaaagwkvnlh6y4irjubj63dm36mdsuig6zbc2oakgmssvifpprvx6kzq”
  vcn_id       = oci_core_vcn.export_iad-cloudmaa-vcn.id
}
修改包括删除 export_、更改显示名称和 VCN 引用。
resource oci_core_nat_gateway phxmaa-ngwy {
  block_traffic  = "false"
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = "phxmaa-ngwy"
  freeform_tags = {
  }
  public_ip_id = "ocid1.publicip.oc1.iad.aaaaaaaagwkvnlh6y4irjubj63dm36mdsuig6zbc2oakgmssvifpprvx6kzq"
  vcn_id       = oci_core_vcn.phx-cloudmaa-vcn.id
}
路由表
resource oci_core_route_table export_iad-db-private-RT {
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = "iad-db-private-RT"
  freeform_tags = {
  }
  route_rules {
    #description = <<Optional value not found in discovery>>
    destination       = "0.0.0.0/0"
    destination_type  = "CIDR_BLOCK"
    network_entity_id = oci_core_nat_gateway.export_iadmaa-ngwy.id
  }
  vcn_id = oci_core_vcn.export_iad-cloudmaa-vcn.id
}
修改包括删除 export_、更改路由表的名称、显示名称和 VCN 引用。
resource oci_core_route_table phx-db-private-RT {
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = "phx-db-private-RT"
  freeform_tags = {
  }
  route_rules {
    #description = <<Optional value not found in discovery>>
    destination       = "0.0.0.0/0"
    destination_type  = "CIDR_BLOCK"
    network_entity_id = oci_core_nat_gateway.phxmaa-ngwy.id
  }
  vcn_id = oci_core_vcn.phx-cloudmaa-vcn.id
}
安全列表
resource oci_core_security_list export_iad-db-private-seclist {
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = "iad-db-private-seclist"
  egress_security_rules {
    #description = <<Optional value not found in discovery>>
    destination      = "0.0.0.0/0"
    destination_type = "CIDR_BLOCK"
    #icmp_options = <<Optional value not found in discovery>>
    protocol  = "6"
    stateless = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  egress_security_rules {
    #description = <<Optional value not found in discovery>>
    destination      = "0.0.0.0/0"
    destination_type = "CIDR_BLOCK"
    #icmp_options = <<Optional value not found in discovery>>
    protocol  = "1"
    stateless = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  freeform_tags = {
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.0.102.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "1"
    source      = "10.0.102.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.0.103.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    tcp_options {
      max = "22"
      min = "22"
      #source_port_range = <<Optional value not found in discovery>>
    }
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.0.103.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    tcp_options {
      max = "1530"
      min = "1521"
      #source_port_range = <<Optional value not found in discovery>>
    }
    #udp_options = <<Optional value not found in discovery>>
  }
  vcn_id = oci_core_vcn.export_iad-cloudmaa-vcn.id
}
修改包括删除 export_、更改安全列表的名称及其显示名称、将每个具有 10.0.x.y 到 10.10.x.y 的入站规则中的 CIDR 块更改为 10.10.x.y 以及更改 VCN 引用。保持 0.0.0.0/0 未更改。
resource oci_core_security_list phx-db-private-seclist {
  compartment_id = var.compartment_ocid
  defined_tags = {
  }
  display_name = "phx-db-private-seclist"
  egress_security_rules {
    #description = <<Optional value not found in discovery>>
    destination      = "0.0.0.0/0"
    destination_type = "CIDR_BLOCK"
    #icmp_options = <<Optional value not found in discovery>>
    protocol  = "6"
    stateless = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  egress_security_rules {
    #description = <<Optional value not found in discovery>>
    destination      = "0.0.0.0/0"
    destination_type = "CIDR_BLOCK"
    #icmp_options = <<Optional value not found in discovery>>
    protocol  = "1"
    stateless = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  freeform_tags = {
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.10.102.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "1"
    source      = "10.10.102.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    #tcp_options = <<Optional value not found in discovery>>
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.10.103.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    tcp_options {
      max = "22"
      min = "22"
      #source_port_range = <<Optional value not found in discovery>>
    }
    #udp_options = <<Optional value not found in discovery>>
  }
  ingress_security_rules {
    #description = <<Optional value not found in discovery>>
    #icmp_options = <<Optional value not found in discovery>>
    protocol    = "6"
    source      = "10.10.103.0/24"
    source_type = "CIDR_BLOCK"
    stateless   = "false"
    tcp_options {
      max = "1530"
      min = "1521"
      #source_port_range = <<Optional value not found in discovery>>
    }
    #udp_options = <<Optional value not found in discovery>>
  }
  vcn_id = oci_core_vcn.phx-cloudmaa-vcn.id
}
子网
resource oci_core_subnet export_exadb-private-subnet-ad2 {
  availability_domain = "LoSv:US-ASHBURN-AD-2"
  cidr_block          = "10.0.101.0/24"
  compartment_id      = var.compartment_ocid
  defined_tags = {
    "Oracle-Tags.CreatedBy" = "ocid1.saml2idp.oc1..aaaaaaaatilj7lqztsx6jehhm7k5374c5jxg6uuhzvdehgbiprb55gnyejba/<oci user name>"
    "Oracle-Tags.CreatedOn" = "2020-03-13T18:50:55.371Z"
  }
  dhcp_options_id = oci_core_vcn.export_iad-cloudmaa-vcn.default_dhcp_options_id
  display_name    = "exadb-private-subnet-ad2"
  dns_label       = "exadbprivate"
  freeform_tags = {
  }
  #ipv6cidr_block = <<Optional value not found in discovery>>
  prohibit_internet_ingress  = "true"
  prohibit_public_ip_on_vnic = "true"
  route_table_id             = oci_core_route_table.export_iad-db-private-RT.id
  security_list_ids = [
    oci_core_security_list.export_siteguard-seclist.id,
    oci_core_security_list.export_bastion-private-seclist.id,
    oci_core_security_list.export_iad-db-private-seclist.id,
  ]
  vcn_id = oci_core_vcn.export_iad-cloudmaa-vcn.id
}
修改包括移除出现位置的 "export_"、将 CIDR 更改为 VCN 中凤凰城区域的子网、更改可用性域、更改路由表和 VCN 引用。
resource oci_core_subnet exadb-private-subnet-ad1 {
  availability_domain = "LoSv:US-PHOENIX-AD-1"
  cidr_block          = "10.10.101.0/24"
  compartment_id      = var.compartment_ocid
  defined_tags = {
    "Oracle-Tags.CreatedBy" = "ocid1.saml2idp.oc1..aaaaaaaatilj7lqztsx6jehhm7k5374c5jxg6uuhzvdehgbiprb55gnyejba/<oci user name>"
    "Oracle-Tags.CreatedOn" = "2020-03-13T18:50:55.371Z"
  }
  dhcp_options_id = oci_core_vcn.phx-cloudmaa-vcn.default_dhcp_options_id
  display_name    = "exadb-private-subnet-ad1"
  dns_label       = "exadbprivate"
  freeform_tags = {
  }
  #ipv6cidr_block = <<Optional value not found in discovery>>
  prohibit_internet_ingress  = "true"
  prohibit_public_ip_on_vnic = "true"
  route_table_id             = oci_core_route_table.phx-db-private-RT.id
  security_list_ids = [
    oci_core_security_list.siteguard-seclist.id,
    oci_core_security_list.bastion-private-seclist.id,
    oci_core_security_list.phx-db-private-seclist.id,
  ]
  vcn_id = oci_core_vcn.phx-cloudmaa-vcn.id
}

由于项存在必须更改的模式,因此使用 sed 等编辑工具可以帮助自动执行必要的更改。

  1. 备份 .tf 文件。
  2. 根据资源类型编辑 Terraform 定义。
  3. 如果使用 Terraform 预配了某些组件,而使用 OCI 控制台或其他方式预配了其他组件,则必须调整您计划使用的 Terraform 资源定义。
    例如,如果您使用 OCI 控制台预配了 VCN 和 NAT 网关,则引用 .tf 文件中的 VCN 和 NAT 网关的任何资源都需要进行以下更改:
    1. vars.tf 文件中,使用以下模式添加和设置两个变量 vcn_ocidnat_gateway_ocid 的值:
      variable vcn_ocid { default = "OCID of VCN" } 
      variable nat_gateway_ocid { default = "OCID of NAT gateway" }
    2. 搜索具有资源且定义引用了 VCN 或 NAT 网关的所有 .tf 文件。例如,搜索模式 vcn_idnetwork_entity_id。对于每次出现的情况,将变量设置为新值,如下所示:
      vcn_id = "${var.vcn_ocid}"
      network_entity_id = "${var.nat_gateway_ocid}"
    3. 修改 availability_domain.tf 文件以包括目标区域中的所有可用性域。
      要查找 OCI 中的可用性域列表,请单击计算,然后单击实例。可用性域显示在屏幕左侧。

      以凤凰为例

      ## This configuration was generated by terraform-provider-oci
      ## then modified to include all ADs at the target 
      
      data oci_identity_availability_domain LoSv-US-PHOENIX-AD-1 {
        compartment_id = var.compartment_ocid
        ad_number      = "1"
      }
      data oci_identity_availability_domain LoSv-US-PHOENIX-AD-2 {
        compartment_id = var.compartment_ocid
        ad_number      = "2"
      }
      data oci_identity_availability_domain LoSv-US-PHOENIX-AD-3 {
        compartment_id = var.compartment_ocid
        ad_number      = "3"
      }

      注意:

      要从 OCI 控制台获取 OCID,请单击资源的 OCID 的显示复制链接。

      下面是 core.tf 文件所需的更改示例,其中包含使用上面定义的变量的路由表资源的定义。

      resource oci_core_route_table phx-db-private-RT {
        compartment_id = var.compartment_ocid
        defined_tags = {
        }
        display_name = "phx-db-private-RT"
        freeform_tags = {
        }
        route_rules {
          #description = <<Optional value not found in discovery>>
          destination       = "0.0.0.0/0"
          destination_type  = "CIDR_BLOCK"
          #network_entity_id = oci_core_nat_gateway.maa-phx-ngw.id
          network_entity_id = "${var.nat_gateway_ocid}"
        }
        #vcn_id = oci_core_vcn.ebs-maacloud2-vcn.id
        vcn_id = "${var.vcn_ocid}"
      }

使用 Terraform 部署资源

编辑了将在辅助区域中通过 Terraform 部署的所有资源后,请收集包含这些资源的 .tf 文件。您必须拥有以下文件:

  • vars.tf:此文件包含执行 Terraform 所需的所有 Terraform 变量。
  • availability_domain.tf:此文件包含辅助区域的所有可用性域的定义。
  • 一个或多个包含用于部署所选资源的资源定义的 .tf 文件。

您无需在主站点包括由 Terraform 搜索进程生成的所有 .tf 文件。仅需要上述文件。

按照以下步骤使用 OCI 控制台部署资源:

  1. 将所需的 .tf 文件压缩到单个 ZIP 文件中。
    这用于创建 Terraform 堆栈。
  2. 登录到 OCI 控制台并导航到 Development Services ,然后导航到 Resource Manager 下的 Stacks
  3. 使用“区间”菜单可以指定要在其中放置堆栈 ZIP 文件的区间。
  4. 单击创建堆栈
  5. 选择我的配置
  6. Terraform 源下,选择 ZIP 文件,然后浏览并选择在步骤 1 中创建的 ZIP 文件。
  7. (可选)为堆栈提供名称。
  8. (可选)提供堆栈的说明。
  9. 选择要创建堆栈的区间。
  10. (最佳做法)选择最新版本的 Terraform。
  11. (可选)添加任何标记。
  12. 单击下一步
  13. 验证此页上列出的变量是否具有正确的值,并更改任何不正确的值。
    这些变量是从 vars.tf 文件中读取的。
  14. 单击下一步
    此时将显示“复查”页。由于您仅创建 Terraform 堆栈(这是要部署的所有资源的定义),因此请不要选择运行应用
  15. 单击创建
    创建 Terraform 堆栈后,“堆栈详细信息”页面会显示多个操作按钮,其中一个是计划
  16. 单击计划以创建计划。
    Terraform 在创建计划时验证堆栈。如果创建计划失败,则 OCI 控制台将指示作业失败,并显示日志,其中显示哪些 .tf 文件以及哪些资源定义出错。编辑 .tf 文件以更正错误,重新创建 Terraform 堆栈,然后再次尝试创建计划。
    一旦解决了所有错误并且计划作业成功运行,请转到下一步。
  17. 单击应用
    这将启动一个作业来创建在 Terraform 堆栈中定义的所有资源。作业的运行时间取决于要部署的资源类型和数量。例如,创建计算实例或数据库服务(VM DB 或 Oracle Autonomous Database on Dedicated Exadata Infrastructure )将需要一些时间。

使用 PeopleSoft Cloud Manager 预配中间层

您可以使用 PeopleSoft Cloud Manager 通过安装软件或执行应用程序和 Web 层平移来预配中间层。

使用 PeopleSoft Cloud Manager 安装 PeopleSoft 应用程序和中间层软件

在此路径上,执行应用程序和 Web 中间层软件的全新安装,然后将其配置为访问 PeopleSoft 数据库。Cloud Manager 必须订阅正确的 PeopleSoft 渠道,特别是 PeopleTools 和所有正在使用的 PeopleSoft 应用程序。PeopleTools 版本必须与内部部署相同。

此选项不引用内部部署。

  1. 在 Cloud Manager 中,通过选择以下项,使用管理节点一次创建一个计算实例:
    • 新中间层的版本和形状
    • 将放置新中间层的区间
    • 要在其上部署新中间层的 VCN、可用性域和子网
    • 要配置的层:应用程序服务器、进程调度程序或 Web 服务器。您可以在共享服务器上部署应用服务器和进程调度程序。
      • 特定于所选层(应用程序服务器、进程调度器或 Web 服务器域)的设置,以及每个层的 PeopleSoft 域数。
      • 必需的身份证明,例如访问 ID、连接 ID、WebLogic 密码、数据库密码等。
      • 用于共享 PS_HOMEPS_APP_HOMEPS_CUSTOM_HOME 的文件系统。
      • 每种服务器类型的进程数。
    • 根据需要设置其他属性。
  2. 单击提交

    作业启动预配过程。如果没有发生故障,则将有一个新的中间层运行上述配置的服务。新的中间层将显示在 OCI 控制台中。

使用 PeopleSoft Cloud Manager 提升和转移应用和 Web 层

通过这种选择,您将从源系统提取应用程序和中间层软件,以便在新环境中进行安装。首先,您将挖掘现有环境“提升”部分,然后使用该数据构建 OCI 设置(“班次”)。应用程序提升过程会创建一个 DPK(Deployment Puppet Kit,部署 Puppet Kit),其中包含 PS_HOMEPS_APP_HOMEPS_CUSTOM_HOME 的内容。创建 DPK 后,它会上载到对象存储桶,PeopleSoft Cloud Manager 可通过该存储桶在 OCI 中部署新的中间层。

有关这些选项的更多详细信息,请参阅 PeopleSoft Cloud Manager 文档

  1. 下载并安装升降工具包。
    要下载和安装升降装置工具包,请参见 PeopleSoft Cloud Manager 文档中的“下载升降装置”部分。确保查看“Installing Lift Prerequisites(安装提升先决条件)”。
  2. 执行应用程序提升。
    请参阅 PeopleSoft Cloud Manager 文档“执行应用程序提升”。您将按照以下详细步骤执行仅应用程序提升,因为数据库是使用 ZDM 迁移的。
  3. 使用管理节点操作向此环境添加节点,如上一节中所述。

    此选项允许您选择上载的 DPK 以及新中间层节点的配置。Cloud Manager 将显示从源环境中搜索到的设置,供您查看和调整。设置列表与上一节中所述的相同。

  4. 单击提交可创建启动预配流程的作业。
    如果没有故障,则将有一个新的中间层运行您配置的服务。此新的中间层将显示在 OCI 控制台中。