Skip to content

Commit 364247b

Browse files
CodeArtisanXshanye997
authored andcommitted
add tech-solution datav-for-digitalization
1 parent d4e58c4 commit 364247b

File tree

4 files changed

+186
-0
lines changed

4 files changed

+186
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Introduction
2+
<!-- DOCS_DESCRIPTION_CN -->
3+
本示例用于实现解决方案[快速搭建企业经营大屏](https://www.aliyun.com/solution/tech-solution/datav-for-digitalization),涉及专有网络(VPC)、交换机(VSwitch)、RDS数据库(RDS)等资源的部署。
4+
<!-- DOCS_DESCRIPTION_CN -->
5+
6+
<!-- DOCS_DESCRIPTION_EN -->
7+
This example is used to implement solution [Quickly build a large screen of enterprise management](https://www.aliyun.com/solution/tech-solution/datav-for-digitalization), which involves the creation and deployment of resources such as Virtual Private Cloud (VPC), Virtual Switch (VSwitch), RDS Database (RDS).
8+
<!-- DOCS_DESCRIPTION_EN -->
9+
10+
<!-- BEGIN_TF_DOCS -->
11+
## Providers
12+
13+
| Name | Version |
14+
|------|---------|
15+
| <a name="provider_alicloud"></a> [alicloud](#provider\_alicloud) | n/a |
16+
| <a name="provider_random"></a> [random](#provider\_random) | n/a |
17+
18+
## Modules
19+
20+
No modules.
21+
22+
## Resources
23+
24+
| Name | Type |
25+
|------|------|
26+
| [alicloud_db_account.default](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_account) | resource |
27+
| [alicloud_db_database.database](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_database) | resource |
28+
| [alicloud_db_instance.rds_instance](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/db_instance) | resource |
29+
| [alicloud_security_group.security_group](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/security_group) | resource |
30+
| [alicloud_vpc.vpc](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vpc) | resource |
31+
| [alicloud_vswitch.vswitch](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/resources/vswitch) | resource |
32+
| [random_id.suffix](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) | resource |
33+
| [alicloud_db_zones.zones_ids](https://registry.terraform.io/providers/aliyun/alicloud/latest/docs/data-sources/db_zones) | data source |
34+
35+
## Inputs
36+
37+
| Name | Description | Type | Default | Required |
38+
|------|-------------|------|---------|:--------:|
39+
| <a name="input_db_password"></a> [db\_password](#input\_db\_password) | MySQL数据库密码 | `string` | n/a | yes |
40+
| <a name="input_rds_db_user"></a> [rds\_db\_user](#input\_rds\_db\_user) | 数据库账号 | `string` | `"user_test"` | no |
41+
<!-- END_TF_DOCS -->
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# ------------------------------------------------------------------------------
2+
# 核心资源定义
3+
#
4+
# 本文件包含了模块的核心基础设施资源
5+
# 这里的代码负责根据输入变量来创建和配置所有云资源
6+
# ------------------------------------------------------------------------------
7+
8+
# 配置阿里云提供商
9+
provider "alicloud" {
10+
region = "cn-hangzhou"
11+
}
12+
13+
# 创建一个随机ID
14+
resource "random_id" "suffix" {
15+
byte_length = 8
16+
}
17+
18+
# 定义一个局部变量
19+
locals {
20+
common_name = random_id.suffix.id
21+
}
22+
23+
# 查询满足条件的可用区
24+
data "alicloud_db_zones" "zones_ids" {
25+
engine = "MySQL"
26+
engine_version = "8.0"
27+
instance_charge_type = "PostPaid"
28+
category = "Basic"
29+
db_instance_storage_type = "cloud_essd"
30+
}
31+
32+
# 创建专有网络VPC
33+
resource "alicloud_vpc" "vpc" {
34+
vpc_name = "vpc-${local.common_name}"
35+
cidr_block = "192.168.0.0/16"
36+
}
37+
38+
# 创建交换机VSwitch
39+
resource "alicloud_vswitch" "vswitch" {
40+
vpc_id = alicloud_vpc.vpc.id
41+
zone_id = data.alicloud_db_zones.zones_ids.ids.1
42+
cidr_block = "192.168.0.0/24"
43+
vswitch_name = "vsw-${local.common_name}"
44+
}
45+
46+
# 创建安全组
47+
resource "alicloud_security_group" "security_group" {
48+
vpc_id = alicloud_vpc.vpc.id
49+
}
50+
51+
# 创建RDS实例
52+
resource "alicloud_db_instance" "rds_instance" {
53+
engine = "MySQL"
54+
instance_storage = 40
55+
engine_version = "8.0"
56+
security_ips = ["192.168.0.0/16"]
57+
vpc_id = alicloud_vpc.vpc.id
58+
zone_id = data.alicloud_db_zones.zones_ids.ids.1
59+
vswitch_id = alicloud_vswitch.vswitch.id
60+
instance_charge_type = "Postpaid"
61+
instance_type = "mysql.n2.medium.1"
62+
category = "Basic"
63+
db_instance_storage_type = "cloud_essd"
64+
}
65+
66+
# 创建数据库
67+
resource "alicloud_db_database" "database" {
68+
character_set = "utf8"
69+
instance_id = alicloud_db_instance.rds_instance.id
70+
name = "mysqltest"
71+
}
72+
73+
# 创建数据库账号
74+
resource "alicloud_db_account" "default" {
75+
db_instance_id = alicloud_db_instance.rds_instance.id
76+
account_name = var.rds_db_user
77+
account_password = var.db_password
78+
account_type = "Super"
79+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# ------------------------------------------------------------------------------
2+
# 模块输出值
3+
#
4+
# 本文件定义了模块执行成功后返回给调用方的值
5+
# 这些输出可以被其他 Terraform 配置引用,或在 apply 命令结束后显示给用户
6+
# ------------------------------------------------------------------------------
7+
8+
# 输出创建的RDS实例ID
9+
output "DBInstanceId" {
10+
value = alicloud_db_instance.rds_instance.id
11+
description = "RDS 实例 ID"
12+
}
13+
14+
# 输出RDS实例的内网连接地址
15+
output "InnerConnectionString" {
16+
value = alicloud_db_instance.rds_instance.connection_string
17+
description = "RDS 内网连接地址"
18+
}
19+
20+
# 输出RDS实例的内网端口号
21+
output "InnerPort" {
22+
value = alicloud_db_instance.rds_instance.port
23+
description = "RDS 内网端口"
24+
}
25+
26+
# 输出数据库账号。
27+
output "account_name" {
28+
value = var.rds_db_user
29+
description = "数据库账号"
30+
}
31+
32+
# 输出数据库密码。
33+
output "account_password" {
34+
value = var.db_password
35+
sensitive = true
36+
description = "数据库密码"
37+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# ------------------------------------------------------------------------------
2+
# 模块输入变量
3+
#
4+
# 本文件定义了该 Terraform 模块所有可配置的输入变量
5+
# 每个变量都包含了详细的说明,以帮助用户正确配置模块
6+
# ------------------------------------------------------------------------------
7+
8+
# 数据库账号名称
9+
variable "rds_db_user" {
10+
type = string
11+
default = "user_test"
12+
validation {
13+
condition = can(regex("^[a-z][a-z0-9_]{0,31}$", var.rds_db_user))
14+
error_message = "由 2 到 32 个小写字母组成,支持小写字母、数字和下划线,以小写字母开头"
15+
}
16+
description = "数据库账号"
17+
}
18+
19+
# MySQL数据库密码
20+
variable "db_password" {
21+
type = string
22+
sensitive = true
23+
#default = ""
24+
description = "MySQL数据库密码"
25+
validation {
26+
condition = can(regex("^[0-9A-Za-z_!@#$%^&*()_+\\-=\\+]+$", var.db_password)) && length(var.db_password) >= 8 && length(var.db_password) <= 30
27+
error_message = "长度8-30,必须包含三项(大写字母、小写字母、数字、 !@#$%^&*()_+-=中的特殊符号)"
28+
}
29+
}

0 commit comments

Comments
 (0)