Skip to content

201-use-case-create-postgresql-db-for-rds-instance #321

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
## Introduction

<!-- DOCS_DESCRIPTION_CN -->
本示例用于在阿里云上创建一个PostgreSQL类型的云数据库实例。
本示例来自[创建一个云数据库实例](https://help.aliyun.com/document_detail/111635.html)。
<!-- DOCS_DESCRIPTION_CN -->

<!-- DOCS_DESCRIPTION_EN -->
This example is used to create a PostgreSQL database for RDS instance on Alibaba Cloud.
This example is from [Create an ApsaraDB for RDS instance](https://help.aliyun.com/document_detail/111635.html).
<!-- DOCS_DESCRIPTION_EN -->

<!-- BEGIN_TF_DOCS -->
## Providers

| Name | Version |
|------|---------|
| <a name="provider_alicloud"></a> [alicloud](#provider\_alicloud) | n/a |

## Modules

No modules.

## Resources

| Name | Type |
|------|------|
| [alicloud_db_account_privilege.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_account_privilege) | resource |
| [alicloud_db_connection.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_connection) | resource |
| [alicloud_db_database.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_database) | resource |
| [alicloud_db_instance.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_instance) | resource |
| [alicloud_rds_account.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/rds_account) | resource |
| [alicloud_vpc.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
| [alicloud_vswitch.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
| [alicloud_db_zones.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/db_zones) | data source |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_account_name"></a> [account\_name](#input\_account\_name) | 设置RDS账号名称 | `string` | `"tf_example"` | no |
| <a name="input_account_password"></a> [account\_password](#input\_account\_password) | 设置RDS账号的密码 | `string` | `"!Qaz1234"` | no |
| <a name="input_connection_prefix"></a> [connection\_prefix](#input\_connection\_prefix) | 设置外网连接地址的前缀 | `string` | `"test1234"` | no |
| <a name="input_db_category"></a> [db\_category](#input\_db\_category) | 设置产品系列,按量付费类型实例只支持Basic、HighAvailability、cluster。 | `string` | `"Basic"` | no |
| <a name="input_db_instance_storage_type"></a> [db\_instance\_storage\_type](#input\_db\_instance\_storage\_type) | 设置实例存储类型 | `string` | `"cloud_essd"` | no |
| <a name="input_engine_version"></a> [engine\_version](#input\_engine\_version) | 设置数据库版本 | `string` | `"14.0"` | no |
| <a name="input_instance_storage"></a> [instance\_storage](#input\_instance\_storage) | 设置存储空间 | `string` | `"20"` | no |
| <a name="input_instance_type"></a> [instance\_type](#input\_instance\_type) | 设置实例规格 | `string` | `"pg.n2.2c.1m"` | no |
| <a name="input_name"></a> [name](#input\_name) | 设置资源名称 | `string` | `"tf_test"` | no |
<!-- END_TF_DOCS -->

## Documentation
<!-- docs-link -->

The template is based on Aliyun document: [Create an ApsaraDB for RDS instance](https://help.aliyun.com/document_detail/111635.html)

<!-- docs-link -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
provider "alicloud" {
region = "cn-hangzhou"
}

# 设置资源名称
variable "name" {
default = "tf_test"
}

# 设置产品系列,按量付费类型实例只支持Basic、HighAvailability、cluster。
variable "db_category" {
default = "Basic"
}

# 设置实例规格
variable "instance_type" {
default = "pg.n2.2c.1m"
}

# 设置实例存储类型
variable "db_instance_storage_type" {
default = "cloud_essd"
}

# 设置数据库版本
variable "engine_version" {
default = "14.0"
}

# 设置存储空间
variable "instance_storage" {
default = "20"
}

# 设置RDS账号名称
variable "account_name" {
default = "tf_example"
}

# 设置RDS账号的密码
variable "account_password" {
default = "!Qaz1234"
}

#设置外网连接地址的前缀
variable "connection_prefix" {
default = "test1234"
}

# 查询符合以下要求的可用区
data "alicloud_db_zones" "default" {
engine = "PostgreSQL"
engine_version = var.engine_version
instance_charge_type = "PostPaid"
category = var.db_category
db_instance_storage_type = var.db_instance_storage_type
}

# 专有网络
resource "alicloud_vpc" "default" {
vpc_name = var.name
cidr_block = "10.1.0.0/21"
}

# 交换机
resource "alicloud_vswitch" "default" {
vswitch_name = var.name
vpc_id = alicloud_vpc.default.id
cidr_block = "10.1.1.0/24"
zone_id = data.alicloud_db_zones.default.zones[0].id
}

# RDS数据库实例
resource "alicloud_db_instance" "default" {
engine = "PostgreSQL"
engine_version = var.engine_version
instance_type = var.instance_type
category = var.db_category
db_instance_storage_type = var.db_instance_storage_type
instance_storage = var.instance_storage
instance_charge_type = "Postpaid"
instance_name = var.name
vswitch_id = alicloud_vswitch.default.id
}

# ProgresSQL数据库
resource "alicloud_db_database" "default" {
instance_id = alicloud_db_instance.default.id
name = var.name
}

# RDS账号
resource "alicloud_rds_account" "default" {
db_instance_id = alicloud_db_instance.default.id
account_name = var.account_name
account_password = var.account_password
}

# 授权账号访问数据库
resource "alicloud_db_account_privilege" "default" {
instance_id = alicloud_db_instance.default.id
account_name = alicloud_rds_account.default.account_name
privilege = "DBOwner"
db_names = [alicloud_db_database.default.name]
}

# 申请外网连接地址
resource "alicloud_db_connection" "default" {
instance_id = alicloud_db_instance.default.id
connection_prefix = var.connection_prefix
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
terraform {
required_providers {
alicloud = {
source = "aliyun/alicloud"
}
}
}
Loading