探索更多

深入瞭解 Oracle Cloud Infrastructure (OCI) 和 PeopleSoft。請參閱Oracle Cloud Infrastructure 的最佳實務架構

檢閱下列 Oracle Cloud Infrastructure 文件資源:

請檢閱以下內容,瞭解 Oracle Database 高可用性產品、功能和最佳實務:

如需 Terraform 命令行介面版本的安裝與組態,請參閱:Terraform Provider

使用 Terraform

Terraform 尋找將會尋找主要區域之區間內的資源定義。您可以從 OCI 主控台存取 Terraform 尋找。它會建立一個可下載 ZIP 檔案中的 Terraform 堆疊。

此範例有數個子網路,每個子網路都有一或多個安全清單,其中包含數十個傳入規則的複雜安全清單。在本案例研究中,我們選擇使用 Terraform 來尋找、複寫網路區間中的資源。

Terraform 發現下列網路元件:
  • 虛擬雲端網路 (VCN
  • 閘道 (網際網路、NAT 及服務閘道)
  • 通道表格
  • 安全清單
  • 子網路

執行 Terraform 尋找

執行 Terraform 尋找以建立 Terraform 堆疊並下載 ZIP 檔案。

  1. 登入 OCI 主控台。
  2. 將區域變更為主要區域。
  3. 按一下主功能表中的開發服務
  4. 在「資源管理器」下,按一下「堆疊」。
  5. 按一下建立堆疊
  6. 選取現有區間:建立從所選區間擷取資源的堆疊 (資源尋找)
  7. 選取要尋找其資源的區間。
    資源尋找區間中,展開根以取得區間的完整清單。例如,網路區間。
  8. 選取資源尋找區域中的 OCI 主要區域。
  9. 為 Terraform 提供者服務選取全部
  10. 輸入要建立之 ZIP 檔的名稱和描述。
  11. 選取要在其中建立堆疊的區間。
  12. 按兩次下一步
    就會顯示「複查」頁面。視需要複查並進行變更。
  13. 按一下建立
    堆疊建立工作完成後,堆疊會顯示在您選取的區間中。
  14. 按一下堆疊的連結。
    便會顯示堆疊詳細資訊頁面。
  15. 按一下 Terraform 組態上的下載連結,將堆疊 ZIP 檔案下載至本機電腦。
  16. 將 ZIP 檔案儲存至目錄並解壓縮檔案。

編輯 Terraform 檔案

解壓縮堆疊 ZIP 檔案時,您會發現數個 JSON 格式的 Terraform 檔案,結尾為 .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 區塊,以及變更 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. 搜尋其資源的所有 .tf 檔案,這些資源的定義具有對 VCN 或 NAT 閘道的參照。例如,搜尋樣式 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 ,然後瀏覽資源管理程式底下的堆疊
  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 資料庫或 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. 在雲端管理程式中,選取管理節點,即可一次建立一個運算執行處理:
    • 新中間層的版本和資源配置
    • 將放置新中間層的區間
    • 要部署新中間層的 VCN、可用性網域以及子網路
    • 要設定哪個層:應用程式伺服器、程序排程程式或 Web 伺服器。您可以在共用伺服器上部署應用程式伺服器與處理排程器。
      • 所選層特定的設定值 (應用程式伺服器、處理作業排程器或 Web 伺服器網域),以及每個層的 PeopleSoft 網域數目。
      • 必要的證明資料,例如「存取 ID」、「連線 ID」、「WebLogic 密碼」、「資料庫密碼」等等。
      • 用於共用 PS_HOMEPS_APP_HOMEPS_CUSTOM_HOME 的檔案系統。
      • 每個伺服器類型的處理作業數目。
    • 視需要設定其他屬性。
  2. 按一下提交

    工作會啟動設定處理作業。如果沒有失敗,將會有執行上述設定之服務的新中間層。新的中間層會顯示在 OCI 主控台中。

使用 PeopleSoft Cloud Manager 將應用程式和 Web 層原封不動地轉移

選擇此選項後,您將從來源系統提取應用程式和中間層軟體,以便在新環境中進行安裝。首先,您將探勘現有的環境 "lift" 部分,然後使用該資料建立 OCI 設定 ("shift")。應用程式提升程序會建立包含 PS_HOMEPS_APP_HOMEPS_CUSTOM_HOME 內容的 DPK (Deployment Puppet Kit)。建立 DPK 之後,便會上傳至物件儲存的儲存桶,其中 PeopleSoft Cloud Manager 可存取此儲存桶,以便在 OCI 中部署新的中間層。

如需這些選項的進一步詳細資訊,請參閱 PeopleSoft Cloud Manager 文件

  1. 下載並安裝升降機工具包。
    若要下載並安裝提升工具程式,請參閱 PeopleSoft Cloud Manager 文件的 "Download the Lift Utility" 小節。請務必檢閱「安裝提升必備條件」。
  2. 執行應用程式提升。
    請參閱 PeopleSoft Cloud Manager 文件的 "Performing Application Lift"。由於資料庫是使用 ZDM 進行移轉,因此您需要遵循這些詳細步驟來執行僅應用程式的提升。
  3. 使用管理節點動作將節點新增至此環境,如上一節所述。

    此選項可讓您選取已上傳的 DPK 和新中間層節點的資源配置。雲端管理程式將會顯示從來源環境發現的設定值以供複查與調整。設定值清單與上一節所述相同。

  4. 按一下送出,即可建立啟動設定處理作業的工作。
    如果沒有失敗,將會有執行您設定之服務的新中間層。此新的中間層會顯示在 OCI 主控台中。