IBM Cloud Docs
使用 Terraform 提供Databases for PostgreSQL实例

使用 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

  1. 按照 安装 Terraform的步骤安装 Terraform。

配置IBM Cloud®提供商插件提供程序插件

  1. 创建或获取IBM Cloud®API 密钥。 API 密钥用于与IBM Cloud®平台进行身份验证,并确定您使用IBM Cloud®服务的权限。

  2. 在IBM Cloud上创建 Terraform数据库项目目录下创建 Terraform。 该目录包含您在本教程中创建的所有配置文件。 本教程中的目录名为 tf-postgres,但可以使用任何名称。

    mkdir tf-postgres && cd tf-postgres
    
  3. 在项目目录下创建一个名为 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 区域仅作为示例,并非要求。 使用最适合实例部署的区域。

  4. 创建一个名为 provider.tf. Use this file to configure the IBM Cloud Provider plug-in with the IBM Cloud API key from your terraform.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 only private endpoints are used in production.
  • adminpassword-Databases for PostgreSQL服务已配置管理员用户,因此您可以使用其命令行工具 psql 管理PostgreSQL。 有关详细信息,请参阅 设置管理员密码
  • - 扩展组代表分配给部署的各种资源。 要查看配置和部署使用 group 属性的数据库的示例,请参阅 使用组属性的示例数据库实例。
  • 组值- 内存、磁盘和 CPU 值均基于配置Databases for PostgreSQL共享计算实例的最低要求。
  • output- terraform 进程结束后,终端将显示新数据库的连接信息。

测试配置

现在,您已为资源配置了IBM Cloud®插件。提供商插件后,就可以在IBM Cloud®上使用 Terraform 来初始化、运行、计划和应用命令来配置资源。 您需要执行以下命令

Terrarform 配置命令
命令描述 命令
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 索引 》。