通过Terraform实现BLB关联监听器、后端服务器、安全组等
更新时间:2024-08-29
概览
本文介绍了通过Terraform实现BLB关联监听器、后端服务器、安全组等功能
需求场景
简化资源运维,通过编写Terraform相关代码文件来实现BLB关联监听器、后端服务器、安全组等功能
方案概述
- 下载Terraform工具,准备基础环境
- 编写.tf文件, 管理基础配置
- 通过Terraform相关命令完成BLB实例关联监听器、后端服务器、安全组等功能
配置步骤
环境准备
- 准备一台可以连接到Internet的PC或者笔记本电脑
- 登录Terraform官网
- 选择对应系统进行下载,解压后是一个2进制可执行文件,需要进行环境变量配置
- 进入配置文件 vi ~/.bash_profile
- 添加环境变量 export PATH=${PATH}:/path (path:二进制文件位置)
- 配置生效 source ~/.profile
- 检查Terraform是否可以正常运行 :执行 terraform -v 如果可以正常显示版本号则证明安装成功
Terraform实现BLB关联监听器、后端服务器、安全组等功能示例
编辑相关tf文件,用于管理BLB、监听器、后端服务器、安全组等配置
- 编辑main.tf :用于配置要下载的provider版本及后续需要的ak sk信息
Plain Text
1 terraform {
2 required_providers {
3 baiducloud = {
4 source = "baidubce/baiducloud"
5 version = "1.12.0" #版本号
6 }
7 }
8 }
9
10 provider "baiducloud" {
11 access_key = "xxxxx"
12 secret_key = "xxxx"
13 region = "bj"
14 }
- 编辑blb.tf管理blb示例,可参考通过Terraform管理BLB
- 编辑blb_listener.tf文件关联listener
Plain Text
1 resource "baiducloud_blb_listener" "TCP" { # 关联TCP
2 blb_id = "${baiducloud_blb.default.id}" # 上一步创建好的blbid
3 listener_port = 124
4 backend_port = 1240
5 protocol = "TCP"
6 #scheduler = "LeastConnection"
7 scheduler = "RoundRobin"
8 }
9
10 resource "baiducloud_blb_listener" "UDP" { # 关联UDP
11 blb_id = "${baiducloud_blb.default.id}" # 上一步创建好的blbid
12 listener_port = 125
13 backend_port = 125
14 protocol = "UDP"
15 #scheduler = "LeastConnection"
16 scheduler = "RoundRobin"
17 health_check_string = "healthy"
18 }
19
20 resource "baiducloud_blb_listener" "HTTP" { # 关联HTTP
21 blb_id = "${baiducloud_blb.default.id}" # 上一步创建好的blbid
22 listener_port = 126
23 backend_port = 126
24 protocol = "HTTP"
25 #scheduler = "LeastConnection"
26 scheduler = "RoundRobin"
27 }
- 编辑blb_server.tf文件关联安全组
Plain Text
1 data "baiducloud_images" "default" { # 查询镜像
2 image_type = "System"
3 name_regex = "8.4 aarch"
4 os_name = "CentOS"
5 }
6
7 resource "baiducloud_instance" "default1" { # 创建bcc实例
8 billing = {
9 payment_timing = "Postpaid"
10 }
11 instance_spec = "bcc.gr1.c1m4"
12 image_id = data.baiducloud_images.default.images.0.id # 上一步查出的镜像id
13 availability_zone = "cn-bj-d"
14 }
15
16 resource "baiducloud_instance" "default2" { # 创建bcc实例
17 billing = {
18 payment_timing = "Postpaid"
19 }
20 instance_spec = "bcc.gr1.c1m4"
21 image_id = data.baiducloud_images.default.images.0.id # 上一步查出的镜像id
22 availability_zone = "cn-bj-d"
23 }
24
25 resource "baiducloud_blb_backend_server" "default" { # 关联后端服务器
26 blb_id = "${baiducloud_blb.default.id}"
27 backend_server_list {
28 instance_id = "${baiducloud_instance.default1.id}" # 上一步创建出的实例id
29 weight = 39 # 设置权重
30 }
31 backend_server_list {
32 instance_id = "${baiducloud_instance.default2.id}"
33 weight = 5
34 }
35 }
- 编辑blb_security.tf文件关联安全组
Plain Text
1 resource "baiducloud_vpc" "default" { # 创建vpc
2 name = "terra-test-vpc"
3 description = "baiducloud vpc created by terraform"
4 cidr = "192.168.0.0/16"
5 }
6
7 resource "baiducloud_security_group" "default1" { # 创建安全组
8 name = "terra-security-group-1"
9 description = "created by terraform"
10 vpc_id = "${baiducloud_vpc.default.id}" # 上一步创建好的vpcid
11 }
12
13 resource "baiducloud_blb_securitygroup" "blb_default" { # 关联安全组
14 blb_id = "${baiducloud_blb.default.id}"
15 security_group_ids = ["${baiducloud_security_group.default1.id}"]
16 }
执行Terraform命令完成创建
- terraform init : 用于下载或更新百度provider,出现一下信息代表下载成功
- terraform plan:确认资源变更计划
- terraform apply:执行资源创建,出现“Apply complete”代表成功
资源销毁
- 执行terraform destroy命令可销毁上述资源
- 出现“Destroy complete”代表销毁成功
测试验证
- 执行terraform show 查看本地是否可以正确输出购买结果
- 登录百度智能云,查看BLB实例是否已关联监听器、安全组、后端服务器