1+ provider "alicloud" {
2+ region = var. region
3+ }
4+
5+ data "alicloud_zones" "default" {
6+ available_resource_creation = " VSwitch"
7+ }
8+
9+ resource "random_string" "suffix" {
10+ length = 8
11+ lower = true
12+ upper = false
13+ numeric = false
14+ special = false
15+ }
16+
17+ locals {
18+ common_name = random_string. suffix . id
19+ }
20+
21+ resource "alicloud_vpc" "vpc" {
22+ cidr_block = " 192.168.0.0/16"
23+ vpc_name = " vpc-${ local . common_name } "
24+ }
25+
26+ resource "alicloud_vswitch" "vswitch_1" {
27+ vpc_id = alicloud_vpc. vpc . id
28+ cidr_block = " 192.168.1.0/24"
29+ zone_id = data. alicloud_zones . default . zones [0 ]. id
30+ vswitch_name = " vswitch-1-${ local . common_name } "
31+ }
32+
33+ resource "alicloud_vswitch" "vswitch_2" {
34+ vpc_id = alicloud_vpc. vpc . id
35+ cidr_block = " 192.168.2.0/24"
36+ zone_id = data. alicloud_zones . default . zones [0 ]. id
37+ vswitch_name = " vswitch-2-${ local . common_name } "
38+ }
39+
40+ resource "alicloud_vswitch" "vswitch_3" {
41+ vpc_id = alicloud_vpc. vpc . id
42+ cidr_block = " 192.168.3.0/24"
43+ zone_id = data. alicloud_zones . default . zones [1 ]. id
44+ vswitch_name = " vswitch-3-${ local . common_name } "
45+ }
46+
47+ resource "alicloud_vswitch" "vswitch_4" {
48+ vpc_id = alicloud_vpc. vpc . id
49+ cidr_block = " 192.168.4.0/24"
50+ zone_id = data. alicloud_zones . default . zones [1 ]. id
51+ vswitch_name = " vswitch-4-${ local . common_name } "
52+ }
53+
54+ resource "alicloud_security_group" "security_group_frontend" {
55+ vpc_id = alicloud_vpc. vpc . id
56+ security_group_name = " sg-fe-${ local . common_name } "
57+ }
58+
59+ resource "alicloud_security_group" "security_group_backend" {
60+ vpc_id = alicloud_vpc. vpc . id
61+ security_group_name = " sg-be-${ local . common_name } "
62+ }
63+
64+ resource "alicloud_sae_namespace" "sae_namespace" {
65+ namespace_name = " sae-ns-${ local . common_name } "
66+ namespace_id = " ${ var . region } :${ local . common_name } "
67+ enable_micro_registration = false
68+ }
69+
70+ resource "alicloud_sae_config_map" "nginx_config_map" {
71+ namespace_id = alicloud_sae_namespace. sae_namespace . namespace_id
72+ name = " nginx"
73+ data = jsonencode ({ " default.conf" : << EOF
74+ server {
75+ listen 80;
76+ listen [::]:80;
77+ server_name localhost;
78+
79+ access_log /var/log/nginx/host.access.log main;
80+
81+ location / {
82+ root /usr/share/nginx/html;
83+ index index.html index.htm;
84+ }
85+
86+ # error_page 404 /404.html;
87+
88+
89+ # redirect server error pages to the static page /50x.html
90+ error_page 500 502 503 504 /50x.html;
91+ location = /50x.html {
92+ root /usr/share/nginx/html;
93+ }
94+
95+ location /saeTest/ {
96+ proxy_pass http://${ alicloud_slb_load_balancer . slb_backend . address } :8080/saeTest/;
97+ }
98+ }
99+ EOF
100+
101+ })
102+
103+ }
104+
105+ resource "alicloud_sae_application" "sae_backend_app" {
106+ app_name = " sae-be-${ local . common_name } "
107+ namespace_id = alicloud_sae_namespace. sae_namespace . id
108+ auto_config = false
109+ vpc_id = alicloud_vpc. vpc . id
110+ security_group_id = alicloud_security_group. security_group_backend . id
111+ vswitch_id = " ${ alicloud_vswitch . vswitch_2 . id } ,${ alicloud_vswitch . vswitch_4 . id } "
112+ timezone = " Asia/Beijing"
113+ replicas = " 2"
114+ cpu = " 500"
115+ memory = " 2048"
116+ package_type = " Image"
117+ jdk = " Dragonwell 21"
118+ image_url = " registry.${ var . region } .aliyuncs.com/sae-serverless-demo/sae-demo:web-springboot-hellosae-v1.0"
119+ programming_language = " java"
120+ }
121+
122+ resource "alicloud_slb_load_balancer" "slb_backend" {
123+ load_balancer_name = " slb-be-${ local . common_name } "
124+ vswitch_id = alicloud_vswitch. vswitch_2 . id
125+ load_balancer_spec = " slb.s2.small"
126+ address_type = " intranet"
127+ }
128+
129+ resource "alicloud_sae_load_balancer_intranet" "sae_slb_backend" {
130+ app_id = alicloud_sae_application. sae_backend_app . id
131+ intranet_slb_id = alicloud_slb_load_balancer. slb_backend . id
132+ intranet {
133+ protocol = " HTTP"
134+ port = 8080
135+ target_port = 8080
136+ }
137+ }
138+
139+ resource "alicloud_sae_application" "sae_frontend_app" {
140+ app_name = " sae-fe-${ local . common_name } "
141+ namespace_id = alicloud_sae_namespace. sae_namespace . id
142+ auto_config = false
143+ vpc_id = alicloud_vpc. vpc . id
144+ security_group_id = alicloud_security_group. security_group_frontend . id
145+ vswitch_id = " ${ alicloud_vswitch . vswitch_1 . id } ,${ alicloud_vswitch . vswitch_3 . id } "
146+ timezone = " Asia/Beijing"
147+ replicas = " 2"
148+ cpu = " 500"
149+ memory = " 2048"
150+ package_type = " Image"
151+ image_url = " registry.${ var . region } .aliyuncs.com/sae-serverless-demo/sae-demo:web-dashboard-hellosae-v1.0"
152+ programming_language = " other"
153+ config_map_mount_desc_v2 {
154+ config_map_id = alicloud_sae_config_map. nginx_config_map . id
155+ mount_path = " /etc/nginx/conf.d/default.conf"
156+ key = " default.conf"
157+ }
158+ }
159+
160+ resource "alicloud_slb_load_balancer" "slb_frontend" {
161+ load_balancer_name = " slb-fe-${ local . common_name } "
162+ vswitch_id = alicloud_vswitch. vswitch_1 . id
163+ load_balancer_spec = " slb.s2.small"
164+ address_type = " internet"
165+ }
166+
167+ resource "alicloud_sae_load_balancer_internet" "sae_slb_frontend" {
168+ app_id = alicloud_sae_application. sae_frontend_app . id
169+ internet_slb_id = alicloud_slb_load_balancer. slb_frontend . id
170+ internet {
171+ protocol = " HTTP"
172+ port = 80
173+ target_port = 80
174+ }
175+ }
0 commit comments