設定 Terraform 模組

在 Oracle Cloud 上代管單一租用戶 SaaS 應用程式所需的網路資源定義於 Terraform 模組中。下載模組並設定必要變數。

下載 Terraform 代碼

GitHub 上提供此解決方案的 Terraform 代碼。

  1. 在左邊的導覽窗格中,按一下下載代碼
  2. 按一下 Git 儲存區域
  3. 將儲存區域複製或下載至您的本機電腦。

關於 Terraform 程式碼

此解決方案的 Terraform 程式碼組織為數個模組,每個包含目標拓撲之特定元件的資源。

Terraform 代碼包含最上層的下列目錄與檔案:
  • chef:此目錄包含用於安裝及設定路由閘道的 Chef 處方。
  • examples:此目錄包含實行此解決方案所需的 Terraform 代碼。此目錄中的程式碼使用 modules 目錄中定義的模組。
  • LICENSE.txt:此檔案包含範例代碼的授權條款與條件。
  • modules:此目錄包含提供解決方案建置區塊的 Terraform 模組。
  • README.md:此檔案提供代碼的簡短描述,以及使用代碼的基本指示。
  • test:此目錄包含可用來驗證建置的測試命令檔。
examples/full-deployment 目錄包含呼叫此解決方案所需之 Terraform 模組的代碼。它包含下列子目錄和檔案:
examples/full-deployment
├── common
│   ├── compartments
│   └── configuration
├── Makefile
├── management
│   ├── access
│   ├── network
│   ├── server_attachment
│   └── servers
├── peering
│   ├── network
│   └── routing
├── README.md
├── tenant
│   ├── network
│   └── servers
├── terraform.tfvars.sample
└── terragrunt.hcl
組態目錄或檔案 組態中定義的資源
common/configuration 無。

此目錄中的程式碼使用 examples/network_calculator 中的 Terraform 模組來計算需要的租用戶 VCN 和對等互連 VCN 數目、每個 VCN 的 CIDR 大小,以及租用戶 VCN 和對等互連 VCN 之間的對應。建立 Vcn 和其他網路資源時,會使用計算結果。

common/compartments
  • 管理區間。
  • 對等互連 Vcn 的一或多個區間。
  • 每個租用戶的區間。
management/access Oracle Linux 運算執行處理連附至 ISV VCN 中的公用子網路。此執行處理是拓樸的基礎伺服器。
management/network
  • ISV VCN 也稱為管理 VCN。
  • ISV VCN 的 NAT 和網際網路閘道。
  • 下列子網路:
    • 管理伺服器的專用管理子網路。
    • 凍結伺服器的公用存取子網路。
    • 路由閘道的專用對等互連子網路
  • VCN 的預設路由表格,使用規則可透過網際網路閘道,路由公用網際網路連結的流量。
  • 對等互連子網路的路由表格,規則可透過 NAT 閘道遞送公用網際網路的流量連結。
  • 存取子網路的安全清單,包含下列規則:
    • 允許來自任何來源的輸入 ICMP 流量。
    • 允許連結任何目的地的外送 TCP 流量。
  • 對等互連子網路的安全清單,包含下列規則:
    • 允許連結任何目的地的外送 TCP 流量。
    • 允許來自任何來源的輸入 ICMP 流量。
    • 允許從任何來源至連接埠 5666 的輸入 TCP 流量。
  • 管理子網路的安全清單,包含下列規則:
    • 允許來自存取子網路的輸入 ICMP 流量。
    • 允許從存取子網路至連接埠 80 的內送 HTTP 流量。
    • 允許連結任何目的地的外送 TCP 流量。
management/server_attachment
  • 連附到管理子網路的路由表格,規則如下:
    • 透過 NAT 閘道路由公用網際網路連結的流量。
    • 將每個租用戶 Vcn 的流量連結至適當的路由閘道執行處理。
  • 連附至存取子網路的路由表格,規則如下:
    • 透過網際網路閘道路由公用網際網路連結的流量。
    • 將每個租用戶 Vcn 的流量連結至適當的路由閘道執行處理。
management/servers Oracle Linux 運算執行處理連附至 ISV VCN 中的管理子網路。

您可以使用管理伺服器來安裝及執行基礎架構監督應用程式,例如 Nagios Core。

peering/network
  • 包含代管路由閘道之運算執行處理的動態群組。
  • 此組態中定義之動態群組允許的原則,在區間中使用 Vnic 和專用位址。
  • 每個 VCN 中有一個子網路的兩個對等互連 VCN。
  • 每個 VCN 的本機對等互連閘道 (LPG)。
  • 每個子網路的安全清單,以及允許所有輸入 ICMP 流量和所有輸出 TCP 流量的規則。
  • 每個子網路的路由表格,其中包含透過適當對等互連 VCN 的 LPG,為每個租用戶 VCN 路由流量連結的規則。
peering/routing
  • 兩個路由閘道:
    • 一個閘道是一組運算執行處理,每個執行處理都位於不同的錯誤網域,且安裝了 Pacemaker 以啟用高可用性。每個運算執行處理都有兩個次要 VNIC,且有一個連附至第一個次要 VNIC 的浮動 IP 位址。此閘道是用來展示路由閘道的 HA 容錯移轉。
    • 其他閘道是單一運算執行處理。
  • 具有下列規則的網路安全群組:
    • 允許群組內的所有 TCP 流量都連接埠 3121、2224 和 21064。
    • 允許群組內的所有 UDP 流量到連接埠 4505。
tenant/network 每個用戶的下列資源:
  • 一個租用戶 VCN。
  • 用戶 VCN 的 NAT 和網際網路閘道。
  • 兩個子網路,一個公用子網路與另一個專用子網路。
  • VCN 的 LPG。
  • 公用子網路的路由表格,規則如下:
    • 透過網際網路閘道路由公用網際網路連結的流量。
    • 透過 LPG 遞送對等互連子網路的流量繫結。
    • 透過 LPG 進行管理子網路的路由流量繫結。
  • 專用子網路的路由表,包含下列規則:
    • 透過 NAT 閘道路由公用網際網路連結的流量。
    • 透過 LPG 遞送對等互連子網路的流量繫結。
    • 透過 LPG 進行管理子網路的路由流量繫結。
  • 公用子網路的安全清單,包含下列規則:
    • 允許來自任何目的地的輸入 ICMP 流量。
    • 允許外送 TCP 流量至任何目的地。
  • 專用子網路的安全清單,包含下列規則:
    • 允許來自任何目的地的輸入 ICMP 流量。
    • 允許外送 TCP 流量至任何目的地。
    • 允許輸入 TCP 流量到連接埠 5666。
tenant/servers 每個租用戶區間中的 Oracle Linux 運算執行處理。

您可以使用此執行處理來安裝及執行基礎架構監督代理程式。例如,如果您在 ISV VCN 中的管理伺服器中安裝 Nagios 核心,您就可以在每個租用戶區間的運算執行處理中安裝 Nagios 代理程式。代理程式可以監督區間中的伺服器,並將測量結果傳送給 Nagios 監督伺服器。

terraform.tfvars.sample Terraform 變數檔案的範本。
terragrunt.hcl 區域組態。

設定 Terraform 變數

指定 Terraform 連線至 Oracle Cloud Infrastructure 租用戶、運算執行處理的 SSH 金鑰及路由叢集密碼所需的參數。

  1. examples/full-deployment/terraform.tfvars.sample 複製到 examples/full-deployment/terraform.tfvars
  2. 在純文字編輯器中開啟 examples/full-deployment/terraform.tfvars,然後依下列方式設定變數的值:
    變數 描述
    tenancy_ocid 您租用戶的 OCID。

    您可以在 Oracle Cloud Infrastructure Web 主控台中找到租用戶的 OCID。從服務功能表中選取管理,然後按一下租用戶詳細資訊

    user_ocid 您要使用 Terraform 向 Oracle Cloud Infrastructure 進行認證的使用者 OCID。

    若要尋找使用者的 OCID,請由服務功能表中選取識別,然後選取使用者。在清單中尋找您的使用者名稱,並複製其 OCID。

    fingerprint 您上傳之 API 簽章金鑰的指紋。
    private_key_path 包含您私密 API 簽署金鑰之檔案的完整路徑與名稱。
    region - 區域 要建立資源的區域 ID。

    例如,US East (Ashburn) 區域的 ID 是 us-ashburn-1

    請參閱區域和可用性網域

    compartment_ocid 要在其中建立資源之區間的 OCID。

    您指定的區間將會是拓樸的父項區間。

    若要尋找區間的 OCID,請由服務功能表中選取識別,然後選取區間。找出清單中所需的區間,並複製它的 OCID。

    bastion_ssh_public_key_file 內含基礎伺服器 SSH 公用金鑰之檔案的完整路徑與名稱。
    bastion_ssh_private_key_file 內含基礎伺服器 SSH 私密金鑰之檔案的完整路徑與名稱。
    remote_ssh_public_key_file 拓樸中包含專用運算執行處理之 SSH 公開金鑰的檔案的完整路徑和名稱。
    remote_ssh_private_key_file 拓樸中包含專用運算執行處理之 SSH 私密金鑰的檔案的完整路徑和名稱。

    儲存並關閉 terraform.tfvars

    以下是已完成 terraform.tfvars 檔案的範例:

    tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa2 (truncated)"
    user_ocid = "ocid1.user.oc1..aaaaaaaag (truncated)"
    fingerprint = "56:f6:8e:bf: (truncated)"
    private_key_path = "/home/joe/.oci/oci_api_key.pem"
    region = "us-ashburn-1"
    
    compartment_ocid = "ocid1.compartment.oc1..aaaaaaaam (truncated)"
    
    bastion_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_bastion.pub"
    bastion_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_bastion"
    remote_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_remote.pub"
    remote_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_remote"
  3. 在環境變數中設定路由叢集的共用密碼。
    export TF_VAR_hacluster_password="somePassword"

    密碼必須至少包含 8 個字元。必須至少包含一個大寫字母、一個小寫字母、一個數字以及特殊 (非英數字元) 字元。