Terraform 是一个开源的 IT 基础设施编排工具,支持使用配置文件定义基础设施或应用。通过 Terraform,可以轻松的编排云数据库 PostgreSQL 版的资源,例如创建和管理实例等。
Terraform 当前可免费使用。
Terraform 为云数据库 PostgreSQL 版提供的功能及相应资源如下表所示。
功能 | 使用指引 |
---|---|
创建实例、删除实例、修改实例名称、变更实例配置(为实例扩缩容或变更节点规格,不含增删只读节点)、修改实例参数、为实例绑定或解绑标签。 | |
为指定实例增加或删除只读节点。 | 请参见 volcengine_rds_postgresql_instance_readonly_node。 |
为指定实例创建或删除数据库。 | 请参见 volcengine_rds_postgresql_database。 |
为指定实例创建账号、删除账号、修改账号权限或重置账号密码。 | 请参见 volcengine_rds_postgresql_account。 |
为指定实例创建 Schema、删除 Schema 或修改 Schema 的 owner。 | 请参见 volcengine_rds_postgresql_schema。 |
查询指定实例的账号信息。 | 请参见 volcengine_rds_postgresql_accounts。 |
查询指定实例的数据库信息。 | 请参见 volcengine_rds_postgresql_databases。 |
查询实例列表或查询指定实例的详细信息。 | 请参见 volcengine_rds_postgresql_instances。 |
查询指定实例的 schema 信息。 | 请参见 volcengine_rds_postgresql_schemas。 |
创建白名单、删除白名单。 | 请参见 volcengine_rds_postgresql_allowlist。 |
为指定实例绑定或解绑白名单。 | 请参见 volcengine_rds_postgresql_allowlist_associate。 |
查询白名单。 | 请参见 volcengine_rds_postgresql_allowlists。 |
使用 Terraform 编排云数据库 PostgreSQL 版的资源时,需要安装 Terraform 和 0.0.139 或更新版本的 Provider volcengine。
关于安装 Terraform 的详细信息,请参见安装 Terraform。
关于安装 Provider volcengine 的详细信息,请参见安装 Provider volcengine。
关于使用 Terraform 的详细信息,请参见使用 Terraform。
创建规格如下表所示的 PostgreSQL 实例,代码如下:
实例属性 | 配置值 |
---|---|
实例名称 | acc-test-1 |
实例兼容版本 | PostgreSQL_12 |
实例规格 | rds.postgres.1c2g |
存储空间 | 40 |
私有网络 | acc-test-project1 |
子网 | acc-subnet-test-2 |
计费类型 | PostPaid |
所属项目 | default |
标签 | 标签键为 tagkey,标签值为 tagvalue。 |
实例参数 | 为该实例设定了两个参数:
|
data "volcengine_zones" "foo" { } resource "volcengine_vpc" "foo" { vpc_name = "acc-test-project1" cidr_block = "172.16.0.0/16" } resource "volcengine_subnet" "foo" { subnet_name = "acc-subnet-test-2" cidr_block = "172.16.0.0/24" zone_id = data.volcengine_zones.foo.zones[0].id vpc_id = volcengine_vpc.foo.id } resource "volcengine_rds_postgresql_instance" "foo" { db_engine_version = "PostgreSQL_12" node_spec = "rds.postgres.1c2g" primary_zone_id = data.volcengine_zones.foo.zones[0].id secondary_zone_id = data.volcengine_zones.foo.zones[0].id storage_space = 40 subnet_id = volcengine_subnet.foo.id instance_name = "acc-test-1" charge_info { charge_type = "PostPaid" } project_name = "default" tags { key = "tagkey" value = "tagvalue" } parameters { name = "auto_explain.log_analyze" value = "off" } parameters { name = "auto_explain.log_format" value = "text" } }
为实例 postgres-95472335**** 创建一个高权限账号 Account_super 和一个普通账号 Account_normal,密码分别为 93c@*****!ab12 和 9wc@*****b12,为普通账号 Account_normal 赋予 Inherit
、Login
和 CreateDB
权限。代码如下:
resource "volcengine_rds_postgresql_account" "foo" { account_name = "Account_super" account_password = "93c@*****!ab12" account_type = "Super" instance_id = "postgres-95472335****" } resource "volcengine_rds_postgresql_account" "foo1" { account_name = "Account_normal" account_password = "9wc@****b12" account_type = "Normal" instance_id = "postgres-95472335****" account_privileges = "Inherit,Login,CreateDB" }