佈建資源

您可以使用 Terraform 或 Terragrunt 來佈建資源。如果您使用 Terraform,則必須以指定的順序,在每個目錄中套用組態。您可以透過「區域」使用單一命令授權所有資源。

關於 Terraform 狀態檔案

Terraform 儲存可追蹤您管理之基礎架構資源的態資訊、將部署的資源對應至您的組態、追蹤描述資料,以及提升大型基礎架構部署效能。

依照預設,terraform.tfstate 檔案會儲存在本機主機上。當多個使用者需要建立和毀棄在指定組態中定義的資源時,並不會在 IT 環境中最佳化此預設行為。若要控制在多個使用者環境中部署及管理資源,請將 Terraform 狀態檔案儲存於 Oracle Cloud Infrastructure Object Storage,並在所有使用者之間共用狀態檔案及鎖定檔案。請參閱使用 Terraform 狀態檔案的物件儲存

使用區域授權資源

您可以使用單一命令,利用「區域」來啟動設定拓樸中的所有資源。區域內部呼叫 Terraform 命令,並處理組態中定義的所有跨資源相依性。

  1. 移至 examples/full-deployment 目錄。
  2. 執行下列命令以起始 Terraform 模組:
    make init
    命令會在每個目錄中執行 terraform init,以起始組態中的所有 Terraform 模組。
  3. 請執行下列命令來啟動設定資源:
    terragrunt apply-all
    區域會以定義的順序呼叫組態中所有 Terraform 模組的 terraform apply 命令。將會部署所有資源。

使用 Terraform 佈建資源

如果您選擇使用 Terraform 來佈建資源,則您必須以指定的序列,個別在每個目錄中套用 Terraform 組態。

  1. examples/full-deployment/terraform.tfvars 複製至 examples/full-deployment 下下的下列每個子目錄:
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    移至 examples/full-deployment 目錄,然後輸入下列命令,將 terraform.tfvars 複製到所有必要的子目錄中。為了讓使用者易於閱讀,命令會顯示在每一行結尾有一條反斜線 (\) 的多行中。複製所有的行,包含反斜線字元,然後貼成單一命令。

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. 移至 examples/full-deployment/common/configuration 目錄。
  3. 執行下列命令:
    1. 起始組態:
      terraform init
    2. 複查組態中定義的資源:
      terraform plan
    3. 套用組態:
      terraform apply
    common/configuration 目錄中的組態會計算用戶 VCN 的數目和所需的對等 VCN、每個 VCN 的 CIDR 大小,以及用戶 VCN 和對等互連 VCN 之間的對應。當您套用此組態時,不會建立任何資源;建立 Vcn 和其他網路資源時,會使用計算結果。
  4. 依照指定的執行順序,在 examples/full-deployment 之下列目錄中執行 terraform initterraform plan 以及 terraform apply 命令:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    在您以指定順序執行所有組態目錄中的 terraform apply 之後,就會完全部署拓樸。

修改拓樸

若要修改拓樸,您必須更新適當 Terraform 組態中的資源定義,然後套用修訂的組態。識別需要修改的資源定義需要徹底瞭解範例代碼,特別是每個目錄及模組間相依性所參照的 Terraform 模組。

修改拓樸的指示在此解決方案的範圍之外。

移除所有資源

您可以使用 Terraform 或 Terragrunt 輕鬆移除所有已部署的資源。

  1. 移至 examples/full-deployment 目錄。
  2. 執行下列其中一個動作:
    • 如果您已安裝 Terragrunt,請執行下列命令:

      terragrunt destroy-all

      區域會以定義的順序呼叫組態中資源的 terraform destroy 命令。

      如果您嘗試使用 terragrunt destroy-all 來清除失敗或部分部署,可能會發生下列錯誤:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      如果發生此錯誤,請如下所述,在每個組態目錄中執行 terraform destroy 來移除資源。

    • 若要使用 Terraform CLI 移除資源,請依下列順序在 examples/full-deployment 下的每個組態目錄中執行 terraform destroy

      注意:

      先等待命令在每個目錄中完成執行,再繼續執行下一個目錄。
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration