预配资源

您可以使用 Terraform 或 Terragrunt 预配资源。如果使用 Terraform,则必须在规定序列中应用每个目录中的配置。使用 Terragrunt,可以使用单个命令预配所有资源。

关于 Terraform 状态文件

Terraform 存储用于跟踪托管基础结构资源的状态信息,将已部署的资源映射到您的配置,跟踪元数据,并改善大型基础结构部署的性能。

默认情况下,terraform.tfstate 文件存储在本地主机上。在 IT 环境中,此默认行为并非最佳,在这种情况下,多个用户需要创建和销毁在给定配置中定义的资源。要控制在多用户环境中部署和管理资源,请将 Terraform 状态文件存储在 Oracle Cloud Infrastructure 对象存储中,并在所有用户之间共享状态文件和锁定文件。请参阅使用 Terraform 状态文件的对象存储

使用地形协议预配资源

通过使用单个命令,您可以使用 Terragrunt 来预配拓扑中的所有资源。在内部,Terragrunt 调用 Terraform 命令并处理配置中定义的所有资源间依赖性。

  1. 转到 examples/full-deployment 目录。
  2. 通过运行以下命令初始化 Terraform 模块:
    make init
    该命令通过在每个目录中运行 terraform init 来初始化配置中的所有 Terraform 模块。
  3. 通过运行以下命令预配资源:
    terragrunt apply-all
    Terragrunt 在已定义的序列中为配置中的所有 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 planterraform 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

      Terragrunt 在已定义序列中针对配置中的资源调用 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