使用 Terraform 提供Databases for PostgreSQL实例
在本教程中,您将学习如何使用 Terraform 配置Databases for PostgreSQL实例。
可用工具概述
在开始使用 Terraform 配置数据库之前,你需要有一个IBM Cloud账户。
在本教程中,您将使用 Terraform 来配置数据库,Terraform 使您能够安全、可预测地创建、更改和改进基础架构。 它是一种开源工具,可将应用程序接口编入声明式配置文件,这些文件可在团队成员之间共享,并被视为代码进行编辑、审核和版本控制。 这属于基础架构即代码。 您只需写下基础架构的样子,Terraform 就会根据需要创建、更新和删除云资源。 如需了解更多信息,请参阅 了解 Terraform 基础知识。
为了支持多云方法,Terraform 使用多个提供者。 提供程序负责理解 API 交互并公开资源。IBM Cloud®为 Terraform 提供了提供程序,使IBM Cloud®的用户能够使用 Terraform 管理资源。 虽然 Terraform 被分类为基础架构即代码,但适用范围并不局限于基础架构即服务资源。 有关详细信息,请参阅 ibm_database。
安装 Terraform
- 按照 安装 Terraform的步骤安装 Terraform。
配置IBM Cloud®提供商插件提供程序插件
-
创建或获取IBM Cloud®API 密钥。 API 密钥用于与IBM Cloud®平台进行身份验证,并确定您使用IBM Cloud®服务的权限。
-
在IBM Cloud上创建 Terraform数据库项目目录下创建 Terraform。 该目录包含您在本教程中创建的所有配置文件。 本教程中的目录名为
tf-postgres
,但可以使用任何名称。mkdir tf-postgres && cd tf-postgres
-
在项目目录下创建一个名为
terraform.tfvars
的变量定义文件,并指定所获取的IBM CloudAPI 密钥。 此外,您还需要指定创建IBM Cloud资源的区域。 如果未指定地区,IBM Cloud®提供商插件会自动在美国南方地区创建资源。提供商插件会自动在 us-south 区域创建资源。 Terraform 会在初始化IBM Cloud提供商插件时自动加载terraform.tfvars
文件中定义的变量。提供程序插件初始化时,Terraform 会自动加载该文件中定义的变量。由于变量定义文件包含机密信息,请勿将该文件推送到版本控制系统。 该文件只能保存在本地系统中。
terraform.tfvars
文件示例ibmcloud_api_key = "<IBMCLOUD_API_KEY>" region = "us-east"
us-east
区域仅作为示例,并非要求。 使用最适合实例部署的区域。 -
创建一个名为
provider.tf
. Use this file to configure the IBM Cloud Provider plug-in with the IBM Cloud API key from yourterraform.tfvars
file. 插件使用此密钥访问IBM Cloud并与您的IBM Cloud服务协同工作。 要从terraform.tfvars
文件访问变量值,必须先在provider.tf
文件中声明变量,然后使用var.<variable_name>
语法引用变量。示例
provider.tf
文件terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = ">= 1.28.0" } } } variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
供应 Databases for PostgreSQL 实例
创建一个名为 postgres.tf
.
postgres.tf
文件示例
```terraform {: codeblock}
resource "ibm_resource_group" "resource_group" {
name = "tutorialRG"
}
resource "ibm_database" "postgresql_db" {
resource_group_id = ibm_resource_group.resource_group.id
name = "terraform_postgres"
service = "databases-for-postgresql"
plan = "standard"
location = "us-east"
service_endpoints = "public"
adminpassword = "password123456789"
group {
group_id = "member"
host_flavor {
id = "multitenant"
}
cpu {
allocation_count = 2
}
memory {
allocation_mb = 4096
}
disk {
allocation_mb = 5120
}
}
}
data "ibm_database_connection" "icd_conn" {
deployment_id = ibm_database.postgresql_db.id
user_type = "database"
user_id = "admin"
endpoint_type = "public"
}
output "Postgresql" {
value = data.ibm_database_connection.icd_conn
}
```
- resource_group_id- 您声明的资源组值。
- name- 服务名称可以是任意字符串,是网络和 CLI 中用于标识新部署的名称。
- service- 对于Databases for PostgreSQL 而言,服务 ID 为
databases-for-postgresql
。 为您的部署选择正确的服务 ID。 - 计划- 本教程使用标准计划。 如需了解更多信息,请参阅 IBM Cloud®定价。
- 位置- 为您的部署实例选择合适的区域。
- 服务端点- The service endpoints of your deployment.
public
is used in the tutorial, however it is recommended that onlyprivate
endpoints are used in production. - adminpassword-Databases for PostgreSQL服务已配置管理员用户,因此您可以使用其命令行工具
psql
管理PostgreSQL。 有关详细信息,请参阅 设置管理员密码。 - 组- 扩展组代表分配给部署的各种资源。 要查看配置和部署使用
group
属性的数据库的示例,请参阅 使用组属性的示例数据库实例。 - 组值- 内存、磁盘和 CPU 值均基于配置Databases for PostgreSQL共享计算实例的最低要求。
- output- terraform 进程结束后,终端将显示新数据库的连接信息。
测试配置
现在,您已为资源配置了IBM Cloud®插件。提供商插件后,就可以在IBM Cloud®上使用 Terraform 来初始化、运行、计划和应用命令来配置资源。 您需要执行以下命令
命令描述 | 命令 |
---|---|
terraform init |
The terraform init command is used to initialize a working directory containing Terraform configuration files. |
terraform fmt |
terraform fmt 命令用于将 Terraform 配置文件重写为规范格式和样式。 |
terraform validate |
The terraform validate command validates the configuration files in a directory |
terraform apply |
The terraform apply command runs the actions that are proposed in a Terraform plan. |
有关更多信息,请参阅 调配IBM Cloud®资源。
要查看包含完整 Terraform 配置文件的 Terraform 模板示例以进行测试,请参阅 模板示例。
有关可使用的 Terraform 资源和数据源的概述,请参阅《 IBM Cloud®资源和数据源的 Terraform 索引 》。