設定終端表單執行環境

「區域」執行環境包含建立多層網路拓樸所需之資料夾和「區域」組態檔的版面配置。

關於終端表單執行環境

Terraform 執行環境的版面配置是針對模組化和未來成長所設計。

包含您 Terraform 組態的目錄和檔案即構成執行環境。每個子目錄都代表 Terraform 模組。子目錄則是構成可重複使用的資源庫。

下列目錄結構代表您在此解決方案中建立的執行環境。

Local_directory_structure.png 的描述請參見下方
Local_directory_structure.png 圖解描述

整個組態位於具有您所選擇名稱的根目錄內。開始時,此目錄必須是空的。

建立組態之後,根目錄會包含下列目錄和檔案:

  • compartments 目錄包含區間的組態參數。
  • iam 目錄包含原則和群組的組態參數。
  • vcn 目錄包含虛擬雲端網路的組態參數與閘道。
  • 下列檔案在根目錄中:
    • datasources.tf 決定區域中可用性網域的數目並取得其名稱。
    • provider.tf 定義要使用的 Terraform 提供程式參數。
    • root.tf 定義應該執行 Terraform 的模組。
    • terraform.tvars 定義您要傳遞至 Terraform 的變數值。
    • variables.tf 宣告組態中的模組使用的變數。

建立根模組

在根模組中,您可定義用來連線 Oracle Cloud Infrastructure 的 Terraform 所需參數。還可以定義組態中模組使用的資料和變數。

  1. 在您安裝 Terraform 的電腦上,建立一個目錄,稱為此解決方案其餘部分的根目錄。
  2. 在根目錄中建立下列子目錄:
    • compartments
    • iam
    • vcn
  3. 在根目錄中建立名為 variables.tf 的文字檔,然後將下列程式碼貼入檔案中。
    此代碼會宣告「精簡格式」組態中模組使用的變數。在下一個步驟中,您可以指定這些變數的值。
    variable "tenancy_ocid" {}
    variable "user_ocid" {}
    variable "fingerprint" {}
    variable "private_key_path" {}
    variable "private_key_password" {}
    variable "app_tag" {}
    variable "environment" {}
    variable "home_region" {}
    variable "region" {}
    variable "vcn_cidr" {
      default = "10.0.0.0/16"
    }
    
  4. 在根目錄中建立名為 terraform.tfvars 的文字檔,然後將下列程式碼貼入檔案中。
    在此程式碼中,您可以定義在上一個步驟中宣告的變數值。
    # Parameters to authenticate with Oracle Cloud Infrastructure
    tenancy_ocid="EXAMPLE: ocid1.tenancy.oc1..aaaaaaaaf76usem7gyfrakr35anvky4tyowvdvbik7kbrcizlyjsgfxpdg2a"
    user_ocid="EXAMPLE: ocid1.user.oc1..aaaaaaaa5tds42w2zzbsdflkjwerkjghswdjfbvbts7imlb5yru2p10a"
    fingerprint="EXAMPLE: 9b:6a:ab:ab:32:0b:7f:d5:5b:6w:c0:fe:54:72:f1:pl"
    private_key_path="YOUR_HOME_DIRECTORY/.oci/oci_api_key.pem"
    
    # Leave empty if your private key does not have a password
    private_key_password=""
    
    # See https://docs.oracle.com/pls/topic/lookup?ctx=cloud&id=oci_general_regions
    home_region="EXAMPLE: us-ashburn-1"
    region="EXAMPLE: us-phoenix-1"
    
    # A short identifier for the application, used as a prefix for naming the compartments and other resources
    app_tag="myapp"
    
    # The environment that you're creating resources for: test, dev, prod, or staging
    environment="dev"
    
    # Base CIDR for the VCN
    vcn_cidr="10.0.0.0/16"
  5. 如下表所述,更新 terraform.tfvars 中的變數值:
    變數 描述
    tenancy_ocid 租用的 Oracle Cloud ID (OCID)。

    若要尋找租用的 OCID,請從服務功能表選取管理,然後按一下用戶詳細資訊

    user_ocid 您希望 Terraform 用來與 Oracle Cloud Infrastructure 進行認證之使用者的 Oracle Cloud ID (OCID)。

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

    指紋 您上傳之 API 簽署金鑰的指紋。
    private_key_path 包含您私密金鑰之檔案的路徑。
    private_key_password 私密金鑰的密碼詞組。如果關鍵字沒有密碼,請將此變數保留空白。
    home_region 租用的首頁區域。區間、原則和群組則是在首頁區域中建立。

    若要取得首頁區域,請從服務功能表選取管理,按一下用戶詳細資訊,然後在「首頁區域」欄位中複製值。

    region - 區域 您要建立網路、運算及其他資源的區域。此區域可以是首頁或任何其他 Oracle Cloud Infrastructure 區域。
    app_tag 資源名稱中使用的前置碼,可指示每個資源所屬的應用程式。最佳作法是使用所有小寫字元。
    環境 要在資源名稱中使用的前置碼,用來指示每個資源所用的環境:開發、測試、暫存或生產。最佳作法是使用所有小寫字元。
    vcn_cidr VCN 的位址範圍 (以 CIDR 格式表示)。請謹慎規劃此範圍。您無法在稍後變更。
  6. 在根目錄中建立名為 datasources.tf 的文字檔,然後將下列程式碼貼入檔案中。
    datasources.tf 中的代碼會決定區域中可用性網域的數目及其名稱。此程式碼使用您在 region 變數中指定的區域。
    data "oci_identity_availability_domains" "ad" {
      compartment_id = "${var.tenancy_ocid}"
    }
    
    data "template_file" "ad_names" {
      count    = "${length(data.oci_identity_availability_domains.ad.availability_domains)}"
      template = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
    }
  7. 在根目錄中建立名為 provider.tf 的文字檔,然後將下列程式碼貼入檔案中。
    provider.tf 中的程式碼定義 Terraform 應使用的提供程式參數。提供者可將 Terraform 命令轉譯為雲端服務提供者特定的 API 呼叫。
    provider "oci" {
      alias                = "home"
      region               = "${var.home_region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    
    provider "oci" {
      region               = "${var.region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    此範例定義兩個提供者。這兩個提供者都適用於 Oracle Cloud Infrastructure。第一個提供者是用於首頁區域,您可以在此建立 Oracle Cloud Infrastructure Identity and Access Management 資源。第二個提供者是用來建立網路、運算及其他資源的區域。
  8. 在根目錄中建立名為 root.tf 的文字檔,然後將下列程式碼貼入檔案中。
    此代碼指定 Terraform 必須執行的模組。系統會為 compartmentsiam 模組明確指定提供者,因為必須在首頁區間、群組及原則建立。
    module "compartments" {
      source       = "./compartments"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    
    module "a_vcn" {
      source           = "./vcn"
      tenancy_ocid     = "${var.tenancy_ocid}"
      compartment_ocid = "${module.compartments.networks_id}"
      app_tag          = "${var.app_tag}"
      environment      = "${var.environment}"
      vcn_cidr         = "${var.vcn_cidr}"
    }
    
    module "iam" {
      source       = "./iam"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    app_tagenvironment 變數會強制使用命名配置。不需要使用命名配置,但是它是最佳作法。