[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

【初学者必看】ChatGPT写的Terraform代码

这是肯,五年来第一次感冒,现在恢复得很好。

自从我开始使用AWS服务已经大约一年了。

我认为在控制台上启动和配置 EC2 实例等会很好,但我认为在代码中实现基础设施正逐渐变得更加普遍。顺应这一趋势,我自己决定尝试使用 Terraform 启动 AWS 资源。然而,一切首先都需要时间。

因此,这次我与 ChatGPT 一起创建了 Terraform 代码并对其进行了修改。

环境信息

WSL2

视窗 11

地形 v1.2.5

我们这次搭建的AWS配置

 

我尝试过的提示词

我这次尝试的提示输入极其简单。

我想在 AWS 上构建,如下所示。

专有网络1

路由表1

公有子网2

私有子网2

EC2 1

白蛋白1

电阻率1

如果您输入这样的提示,ChatGPT 会写入各种内容。

如果这种情况持续下去,可能没有足够的目标组或 RDS 子网组,因此我们将要求您创建其他位置。

如果您想继续基本对话,

将目标组添加到上述代码中

看来如果添加诸如“above”之类的关键字,该名称就会被继承。

如果他们不接管,即使他们不愿意,他们也会使用该名称编写代码。另外,当我好奇时,我会使用谷歌搜索来查找是否是这样的。

在 ChatGPT 的帮助下编写的 tf 文件

这次,为了更容易理解,我将这些文件合并为一个文件,并尽可能不使用变量来创建。我认为也可以使用 ChatGPT 使用变量等创建 tf 文件,因此如果您想以这种格式创建它,请尝试一下。

# 配置提供商provider "aws" {region = "ap-northeast-1" } # 创建VPC资源 "aws_vpc" "main" { cidr_block = "10.0.0.0/16" } # 创建互联网网关资源 "aws_internet_gateway" "gw" { vpc_id = aws_vpc.main.id } # 创建公有子网 1 资源 "aws_subnet" "public_subnet1" { vpc_id = aws_vpc.main.id cidr_block = "10.0.1.0/24" available_zone = "ap-northeast-1a " map_public_ip_on_launch = true } # 创建公有子网 2 资源 "aws_subnet" "public_subnet2" { vpc_id = aws_vpc.main.id cidr_block = "10.0.2.0/24" available_zone = "ap-northeast-1c" map_public_ip_on_launch = true } # 私有创建子网 1 资源 " aws_subnet" "private_subnet1" { vpc_id = aws_vpc.main.id cidr_block = "10.0.3.0/24" available_zone = "ap-northeast-1a" } # 创建私有子网 2 资源 "aws_subnet" "private_subnet2 " { vpc_id = aws_vpc.main .id cidr_block = "10.0.4.0/24" available_zone = "ap-northeast-1c" } # 创建路由表资源 "aws_route_table" "public_route_table" { vpc_id = aws_vpc.main.id Route { cidr_block = "0.0.0.0/0 “ gateway_id = aws_internet_gateway.gw.id}}##将路由表与公共子网相关联” aws_route_table_association”“ public_subnet1_association”资源“ aws_route_table_association”“ public_subnet2_association” { subnet_id = aws_subnet.public_subnet2.id route_table_id = aws_route_table.public_route_table.id } # 创建 ALB 资源 "aws_lb" "alb" { name = "test-alb"subnets = [aws_subnet.public_subnet1.id, aws_subnet.public_subnet2.id] 内部 = false load_balancer_type = "application" } # 创建 EC2 资源 "aws_instance" "ec2" { ami = "ami-03dceaabddff8067e" instance_type = "t2.micro" subnet_id = aws_subnet.public_subnet1.id key_name = "hogehoge" } # 创建目标组resource "aws_lb_target_group" "target_group" { name = "my-target-group" port = 80 protocol = "HTTP" vpc_id = aws_vpc.main.id target_type = "instance" } # ALB 和目标组关联资源 "aws_lb_listener" "listener " { load_balancer_arn = aws_lb.alb.arn port = 80 protocol = "HTTP" default_action { type = "forward" target_group_arn = aws_lb_target_group.target_group.arn } } # 将实例注册到目标组资源 "aws_lb_target_group_attachment" "target_group_attachment" { target_group_arn = aws_lb_target_group .target_group.arn target_id = aws_instance.ec2.id port = 80 } # 创建RDS资源 "aws_db_instance" "rds" { engine = "mysql" instance_class = "db.t2.micro" allocate_storage = 10 engine_version = "5.7"identifier = "my-rds-instance" username = "admin" password = "hogehoge"skip_final_snapshot = true public_accessible = false vpc_security_group_ids = [aws_security_group.rds_security_group.id] db_subnet_group_name = aws_db_subnet_group.db_subnet_group name } # 创建安全组以允许访问 RDS。 resources "aws_security_group" "rds_security_group" { vpc_id = aws_vpc.main.id ingress { from_port = 3306 to_port = 3306 protocol = "tcp" cidr_blocks = ["0.0.0.0/ 0"] } } # 创建数据库子网组资源 "aws_db_subnet_group " "db_subnet_group" { name = "my-db-subnet-group" description = "我的数据库子网组"subnet_ids = [aws_subnet.private_subnet1.id, aws_subnet.private_subnet2 .id] }

概括

初学者的缺点是不知道哪个代码是正确的,但我认为有一种方法可以先尝试数字,然后逐渐理解它更容易编写或查看,这就是我今天的想法。

另外,ChatGPT 生成的代码并不完美,所以在这种情况下,我认为运行 terraform apply 时会出现错误。当这种情况发生时,你肯定需要自己进行纠正。

不过,不要以为这很麻烦,当你调查问题所在时,你会逐渐意识到,“我明白了,这就是错误的含义!那么,这是错误的写法。”我我认为是的。

所以,即使出错也不要放弃,一次又一次地尝试,享受工程师的丰富生活。

如果您觉得这篇文章有帮助,请点赞!
6
加载中...
6 票,平均:1.00 / 16
1,295
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

2022 年应届毕业生加入 Beyond。目前
在系统解决方案部门
。研究生毕业之前我一直在学习语言学,并接受了成为基础设施工程师的挑战。我
建立了一个名为 Beyond Cafe Club 的内部俱乐部,并且充满热情关于每天煮咖啡和茶。ing