用Terraform在AWS上搭建简单NGINX服务器指南
2024/12/13 21:03:06
本文主要是介绍用Terraform在AWS上搭建简单NGINX服务器指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基础设施即代码(IaC)极大地改变了开发人员和运营团队配置和管理基础设施的方法,实现了自动化、一致性和可扩展性。最近,我完成了一个重要的项目,将工作负载从本地迁移到AWS云。在这个过程中,我学到了很多,并且掌握了一些迫不及待想与大家分享的技能。
为了记录并反思这些经历,我打算开始一个新系列,重点介绍从这些项目中学到的关键洞察和技能。
项目 #01:在 AWS 上使用 Terraform 部署 NGINX 服务器
这是一个简单的项目,用来展示如何使用Terraform在AWS上轻松部署一个NGINX服务器。它展示了自动化和可重复的流程如何简化基础设施部署的过程,同时确保一致性和可靠性的同时。
点击可查看
项目步骤如下:
这里是如何建立基础设施的分解说明:
1.: 搭建网络架构
- 创建了一个CIDR块为
10.0.0.0/16
的VPC。 - VPC中的公共子网允许实例访问互联网。
- 将一个互联网网关附加到VPC以实现外部通信。
- 创建了一个路由表,将流量通过互联网网关路由。
2. 设置安全组
-
定义了一个安全组来允许:
-
入站的80端口流量(HTTP)。
-
入站的443端口流量(HTTPS)。
- 出站流量未受限制,以便与外部资源通信。
3. 启动并部署 EC2 实例
- 启动了一个 t2.micro 实例,该实例使用了公开可用的 Ubuntu AMI。
- 该实例配置了公网 IP 地址以便外部访问。
- 一个 用户数据脚本 自动化了 NGINX Web 服务器的安装和设置过程:
#!/bin/bash sudo apt-get update -y # 更新软件包列表 sudo apt-get install -y nginx # 安装 Nginx sudo systemctl start nginx # 启动 Nginx sudo systemctl enable nginx # 设置 Nginx 开机自启动
全屏模式。退出全屏。
4.: 验证部署情况
- Terraform 输出包括了 EC2 实例的公共 IP 地址。
- 可以通过浏览器导航到公共 IP 地址来访问默认的 NGINX 页面。
5. 清理计算资源
- Terraform 的
destroy
命令在不再需要时确保所有资源都被安全且系统化地删除了。
……
重要项目文件
providers.tf
文件:配置了 AWS 提供商并指定了 Terraform 版本:
terraform { required_version = ">= 1.7.5" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "us-east-1" } # 需要的terraform版本为1.7.5或更高版本 # 需要的提供者包括hashicorp提供的aws服务,版本号为5.0或接近的版本 # 配置aws提供者,指定区域为us-east-1
全屏模式 退出全屏
network.tf文件
:定义了VPC、子网、Internet网关、路由表以及它们之间的关联:
locals { common_tags = { project = "project01" } } resource "aws_vpc" "project01-vpc" { cidr_block = "10.0.0.0/16" tags = merge(local.common_tags, { Name = "project01-vpc" }) } resource "aws_subnet" "public-subnet" { vpc_id = aws_vpc.project01-vpc.id cidr_block = "10.0.0.0/24" tags = merge(local.common_tags, { Name = "public-subnet" }) } resource "aws_internet_gateway" "project01-igw" { vpc_id = aws_vpc.project01-vpc.id tags = merge(local.common_tags, { Name = "project01-igw" }) } resource "aws_route_table" "project01-rtb" { vpc_id = aws_vpc.project01-vpc.id route { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.project01-igw.id } tags = merge(local.common_tags, { Name = "project01-rtb" }) } resource "aws_route_table_association" "public" { subnet_id = aws_subnet.public-subnet.id route_table_id = aws_route_table.project01-rtb.id }
全屏模式, 退出全屏
compute.tf
:创建了EC2实例和安全组,
资源 "aws_security_group" "nginx-server-sg" { 描述 = "允许HTTP(端口80)和HTTPS(端口443)的安全组" 名称 = "nginx-server-sg" vpc_id = aws_vpc.project01-vpc.id # 允许端口80上的HTTP入站流量 ingress { from_port = 80 to_port = 80 协议 = "tcp" cidr_blocks = ["0.0.0.0/0"] } # 允许端口443上的HTTP入站流量 ingress { from_port = 443 to_port = 443 协议 = "tcp" cidr_blocks = ["0.0.0.0/0"] } # 允许所有出站流量 egress { from_port = 0 to_port = 0 协议 = "-1" cidr_blocks = ["0.0.0.0/0"] } 标签 = merge(local.common_tags, { 名称 = "nginx-server-sg" }) } 资源 "aws_instance" "nginx-server" { ami = "ami-0866a3c8686eaeeba" associate_public_ip_address = true instance_type = "t2.micro" subnet_id = aws_subnet.public-subnet.id vpc_security_group_ids = [aws_security_group.nginx-server-sg.id] root_block_device { delete_on_termination = true volume_size = 10 volume_type = "gp3" } 用户数据 = <<-EOF #!/bin/bash sudo apt-get update -y sudo apt-get install -y nginx sudo systemctl start nginx sudo systemctl enable nginx EOF 标签 = merge(local.common_tags, { 名称 = "project01-nginx-server" }) 生命周期 { 创建前销毁 = true } }
切换到全屏模式,并退出全屏
结论
这个项目提供了一个一窥如 Terraform 这样的基础设施即代码(IaC)工具的能力。虽然它并不完美,也不全面,但它作为一个起点,为探索 IaC 如何简化和自动化基础设施的管理提供了一个基础。希望这个项目能激发你的灵感,鼓励你更深入地了解 IaC 的实践。
你的反馈非常重要,请随时都可以分享你的想法,真的很想听听你的想法!
试试看
- 使用以下命令: 克隆代码库:
克隆代码库:
运行以下命令克隆仓库并进入项目目录:
git clone https://github.com/bokal2/terraform-projects.git cd project01
这些命令是用来克隆一个GitHub仓库并进入特定的项目目录的。
全屏 退出全屏
- 按照 README 中的步骤,您可以搭建自己的 NGINX 服务器。
建开心!
这篇关于用Terraform在AWS上搭建简单NGINX服务器指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享