关于使用 Terraform 开发基础结构组件

您下载的 Terraform 模块包含单独的脚本以创建和设置各种基础结构组件。您可以查看和编辑这些脚本,了解将创建哪些组件以及每个组件的特征。

Terraform 目录的根级别包含主配置文件 main.tf,, 该文件引用各种子目录中的配置文件。此目录还包含定义在 Terraform 配置文件中使用的变量的文件,或包含有关 Terraform 提供程序、数据资源或输出的信息的文件。此外,用于创建安全列表和路由表的 Terraform 配置文件也位于根级别。

Terraform 目录包含 modules 目录。modules 目录包含以下内容:

  • bastion:用于创建基础主机。

  • compute:用于创建 UNIX 和 Windows Oracle Cloud Infrastructure Compute 实例。

  • dbsystem:用于创建 Oracle Cloud Infrastructure Database 系统。

  • filesystem:用于创建 Oracle Cloud Infrastructure 文件存储文件系统。

  • loadbalancer:用于创建 Oracle Cloud Infrastructure 负载平衡实例。

  • network:用于创建虚拟云网络(VCN)、子网、Internet 网关、服务网关、动态路由网关(DRG)和网络地址转换(NAT)网关等网络资源。

关于要创建的基础结构组件

在创建任何基础结构组件之前,必须提供有关组件的类型、编号和分发的一些输入。例如,可以指定需要多少个应用程序实例,是要在单个可用性域中或在两个可用性域中创建所有资源,还是在数据库系统中创建所需的数据库的版本和版本等。

可以使用 Terraform 目录的根级别中的 terraform.tfvars 文件来提供此输入。在文本编辑器中打开 terraform.tfvars 文件,然后输入所需的信息。请参阅根级别目录中提供的 README,了解您可以在该文件中使用的建议值。

默认情况下,Terraform 模块在两个可用性域中创建组件。这由 terraform.tfvars 文件中的变量 AD 的值控制。可以通过编辑此值查看或修改用于托管基础结构组件的可用性域。如果要在单个可用性域中创建组件,请在 terraform.tfvars 文件中将 AD 的值设置为所需的可用性域1, 2, or 3, 。如果要在两个可用性域中创建组件,请指定或修改可用性域的数量。

如果使用建议的默认值应用 Terraform 配置文件而不进行任何更改,则会在两个可用性域中创建以下基础结构组件。

  • 名为 psftvcn 且 IP 地址范围为172.16.0.0/16.的 VCN

  • 16 个子网,每个可用性域中都有 8 个。每个子网都有一个/24 CIDR。例如:172.16.4.0/24.每个子网名称的后缀指示创建该子网的可用性域。

    • 应用程序服务器的专用子网,名称为 appsubad1appsubad2

    • Web 服务器的专用子网,名称为 websubad1websubad2

    • 负载平衡器的专用子网,名称为 lbsubad1lbsubad2

    • 数据库系统的专用子网,名称为 dbsubad1dbsubad2

    • ElasticSearch 服务器的专用子网,名称为 essubad1essubad2

    • PeopleTools 实例的专用子网,名称为 toolsssubad1toolssubad2

    • 文件系统服务的专用子网,名称为 fsssubad1fsssubad2

    • 基础主机的公共子网,名称为 bassubad1bassubad2

  • 以下路由表。在 terraform.tfvars 文件中指定的 VCN 的 DNS 标签会作为前缀添加到每个路由表名称。

    • 没有规则的默认路由表。

    • 专用路由表 psftvcnpvtrt,,它具有用于将对象存储通信路由到服务网关的路由规则,以及所有其他通信量路由到 NAT 实例。

    • 公共路由表 psftvcnpubrt,,该表包含用于将通信量路由到互联网关的路由规则。

  • 以下安全列表:

    • 默认安全列表。

    • 应用程序服务器子网的安全列表,名称为 AppSecList

    • 基础主机子网的安全列表,名称为 BastionSecList

    • 数据库子网的安全列表,名称为 DBSecList

    • ElasticSearch 服务器子网的安全列表,名称为 ESSecList

    • 文件系统服务器子网的安全列表,名称为 FSSSecList

    • 负载平衡器子网的安全列表,名称为 LBSecList

    • PeopleTools 子网的安全列表,名称为 PToolsSecList

    • Web 服务器子网的安全列表,名称为 WebSecList

  • 名为 psftvcnigw.的 Internet 网关在 terraform.tfvars 文件中指定的 DNS 标签作为前缀添加到 Internet 网关名称。Internet 网关将云网络的边缘与 Internet 连接。从 VCN 到 VCN 之外的公共 IP 地址通过互联网网关进行通信。

  • 动态路由网关,名称为 psftvcndrg.。在 terraform.tfvars 文件中指定的 DNS 标签名称将作为动态路由网关名称的前缀。动态路由网关提供了 VCN 与互联网之外的目标之间的通信路径—例如,使用 IPSec VPN 或 Oracle Cloud Infrastructure FastConnect 向内部部署网络进行通信,或者通过远程 VCN 对等连接向其他区域中的 VCN 进行通信。

  • 服务网关,名为 psftvcnsvcgtw.terraform.tfvars 文件中指定的 DNS 标签名称作为服务网关名称的前缀。通过服务网关,VCN 可以访问公共 Oracle Cloud Infrastructure 服务,如 Oracle Cloud Infrastructure 对象存储,但不会在公共互联网上公开 VCN。

  • 以下 Oracle Cloud Infrastructure Compute 实例 , 分布在两个可用性域中。在 terraform.tfvars 文件中指定的环境前缀作为每个实例名称的前缀,区域、可用性域编号和计数具有后缀。每个实例都有一个关联的引导卷。

    • 应用程序服务器。创建的应用程序服务器实例数量及其形状由您在 terraform.tfvars 文件中指定的值决定。

    • 定位主机。

  • 两个 Oracle Cloud Infrastructure Database 系统,每个可用性域中都有一个。Oracle Cloud Infrastructure Database 系统的名称、版本、版本和其他属性由在 terraform.tfvars 文件中指定的值确定。Oracle Cloud Infrastructure Database 系统是在数据库子网 dbsubad1dbsubad2.中创建的

  • 已创建一个用于存放 PeopleSoft 软件的文件系统。文件系统在文件系统子网 fssubad1 中创建。文件系统是在所有 Oracle Cloud Infrastructure Compute 实例上装载的。

  • 两个负载平衡器,每个可用性域中都有一个负载平衡器。在 terraform.tfvars 文件中指定的环境前缀为每个负载平衡器名称的前缀,并且区域和计数为后缀。负载平衡器位于 Web 服务器子网 websubad1websubad2.还将创建负载平衡器的后端集和监听程序。

使用 Terraform 创建基础结构组件

在安装 Terraform 以及 OCI 提供程序并在本地系统上设置环境变量后,即可应用 Terraform 模块在 Oracle Cloud Infrastructure 中创建基础结构组件。

  1. 在本地系统上,打开终端或启动 Windows PowerShell。导航到 Terraform 模块所在的目录。
  2. 输入:terraform apply
  3. 当系统提示您确认操作时,输入 yes.
首先启动 Terraform 以创建在当前目录的 Terraform 模块中指定的所有组件。输出显示正在创建的对象。一些对象(例如数据库系统)可能需要很长时间才能创建。创建所有组件之后,Terraform 显示完成消息。例如:Apply complete! Resources: 90 added, 0 changed, 0 destroyed.

在命令输出的 Outputs 部分中,Terraform 显示已创建实例的公共和专用 IP 地址。记下要连接到的实例的 IP 地址。

如果您遇到任何错误,则可以修复这些错误并再次运行 terraform apply。请确保在首次运行此命令的同一目录中重新运行此命令。Terraform 检查组件的当前状态,并创建不存在的组件。但请注意,如果您在不同目录或者具有相同 Terraform 模块的其他本地系统中运行 Terraform,Terraform 会将此模块视为新的设置,并创建在各种配置文件中指定的所有资源。如果要在不同目录或本地系统中运行 Terraform 来管理现有资源,请将 Terraform 状态文件从现有目录复制到新目录或系统。但是,通常,建议您不要在一个系统或目录中使用 Terraform 来管理由 Terraform 在其他系统或目录中创建的组件。