新闻详情

新闻详情

首页 / 资讯中心 / 详情

devops-exercises 实战:在 AWS 上通过控制台与 Terraform 启动 EC2 Web 实例(httpd + User Data + 安全组)

发布时间:2026/9/30 6:37:42来源:尧图网络
devops-exercises 实战:在 AWS 上通过控制台与 Terraform 启动 EC2 Web 实例(httpd + User Data + 安全组)
文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载本文基于 devops-exercises 仓库中的 Launch EC2 Web Instance 练习 展开完整演示如何在 AWS 上按要求启动一台运行 Apachehttpd的 EC2 实例覆盖控制台图形化操作、User Data 开机脚本、根卷 Delete on Termination 配置、标签与安全组规则并给出等价的 Terraform 基础设施即代码IaC实现。读完本文你将掌握一套可复制的一条命令式 Web 实例交付方案并能理解 User Data 的执行时机、存储生命周期与安全组放行的底层逻辑。一、练习目标拆解从需求到验收标准该练习对目标实例提出了 6 项硬性要求见 exercise.md它们分别对应 EC2 的镜像、机型、存储、引导脚本、元数据标签与网络访问控制编号需求对应的 EC2 配置项1Amazon Linux 2 镜像AMI 选择21 vCPU 1 GiB 内存机型实例类型t2.micro3实例终止时删除存储根卷 Delete on Termination4开机自动安装并启动 httpd、写入指定网页内容User Data用户数据引导脚本5标签 Typeweb、名称 web-1Tags 键值对6允许来自任意地址的 80 端口 HTTP 流量安全组入站规则这套需求模拟了真实生产中的常见场景把一台裸云主机变成一台开箱即用的 Web 服务器。其中第 4 项是核心难点——它要求实例在首次启动时自动完成软件安装与服务配置这正是 EC2 User Data 机制的典型应用。仓库的 AWS 主题页topics/aws/README.md将本练习列入 EC2 系列的首个实战条目与之配套的还有 Security Groups、EBS Volume Creation、Create AMI 等练习建议按顺序完成以建立完整的 EC2 知识链。二、控制台实操十一步启动 web-1 实例1. 准备工作选择区域与进入 EC2 服务登录 AWS 控制台选择一个离你较近的区域如 us-east-1、ap-northeast-1。不同区域的 AMI ID、价格与可用区不同后续 Terraform 与安全组配置都基于同一区域进行。进入EC2 服务页面。左侧菜单点击Instances实例再点击Launch instances启动实例。2. 镜像与机型选择镜像Image选择Amazon Linux 2。它是练习中指定的系统镜像内置 yum 包管理器与后续 User Data 脚本中的yum命令天然配套。机型Instance type选择t2.micro。该机型提供 1 vCPU 与 1 GiB 内存正好满足1 vCPU 1 GiB的要求且通常处于免费套餐额度内。其他满足同等规格的机型如 t3.micro同样可行但需注意是否超出免费额度。提示同一机型在不同区域的可用性可能不同若目标机型不可选可在控制台的机型筛选器中按 vCPU 与内存规格过滤。3. 存储确保 Delete on Termination 已勾选在Storage存储部分确认根卷root block device的Delete on Termination选项处于勾选状态。该选项决定实例终止Terminate时根 EBS 卷是否被一并删除勾选实例终止后根卷被自动销毁不会残留产生费用的孤立卷适合本练习这类临时/一次性实例不勾选根卷会保留数据可用于事后恢复但会持续计费。仓库中 EBS Volume Creation 练习 从反面验证了这一点手动创建的附加卷在实例终止后仍会保留而默认根卷勾选了 Delete on Termination会随实例删除。可见理解该开关对控制云成本至关重要。4. 写入 User Data 引导脚本在User data用户数据字段中粘贴以下脚本yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo h1I made it! This is is awesome!/h1 /var/www/html/index.html逐行解读本脚本在实例首次启动时以 root 权限执行命令作用yum update -y更新系统软件包保证依赖源最新避免安装 httpd 时遇到缺失依赖yum install -y httpd安装 Apache HTTP Serverhttpd-y自动确认systemctl start httpd立即启动 httpd 服务systemctl enable httpd设置 httpd 开机自启实例重启后服务仍然在线echo ... /var/www/html/index.html写入练习要求的首页内容注意原练习文本中为 This is is awesome!控制台脚本中带h1标签Terraform 版本为修正后的 This is awesome!关于 User Data 的三个关键事实可从仓库 Terraform 主题的 user_data 问答 印证User Data 只在实例首次启动时执行一次对已经运行中的实例修改 user_data 并apply不会生效在 Terraform 中若需让脚本变更真正落地需要显式使用user_data_replace_on_change true触发实例替换重建执行日志位于实例内的/var/log/cloud-init-output.log是排查引导失败的第一现场。5. 添加标签Typeweb 与 Nameweb-1在Tags标签部分添加两条键值对keyTypevaluewebkeyNamevalueweb-1其中Name是 AWS 约定俗成的实例显示名称标签控制台实例列表会直接展示它Type: web则用于标记实例角色便于后续按角色进行成本分账、批量筛选或与其他资源如自动伸缩组联动。6. 安全组放行 80 端口入站流量在Security group安全组部分添加一条入站规则TypeHTTPPort range80ProtocolTCPSourceAnywhere-IPv4即0.0.0.0/0允许来自任意 IPv4 地址的 HTTP 请求这条规则的意义是EC2 默认会拒绝所有入站流量即使 httpd 已经监听 80 端口没有安全组放行外部浏览器依然无法访问首页。仓库的 Security Groups 练习 对该机制做了直观演示——删除 HTTP 规则后访问立即超时重新添加后恢复访问。若希望限制来源也可将 Source 改为指定 CIDR如办公网段x.x.x.x/32或另一个安全组 ID。7. 审核与启动、密钥对点击Review审核确认所有配置然后点击Launch启动。若账户中还没有密钥对按提示创建一个如web-1-key并下载保存.pem私钥文件——这是之后通过 SSH 登录实例验证结果的唯一凭证控制台不会再次提供。8. 验证结果实例状态变为Running后等待 12 分钟让 User Data 脚本执行完毕然后在浏览器访问http://实例公网IP/应看到 I made it! This is is awesome!或 SSH 登录后执行cat /var/www/html/index.html、systemctl status httpd验证文件内容与服务状态若页面无法访问优先查看/var/log/cloud-init-output.log与安全组规则。三、Terraform 实现把整套需求写成可复用的 IaC仓库 AWS 主题页明确建议优先使用 IaC 技术Terraform、Pulumi完成练习这比控制台手工点击更接近生产实践。以下配置完整覆盖练习的全部 6 项需求源文件见 solution.mdprovider aws { region us-east-1 // Or your desired region } resource aws_instance web_server { ami ami-12345678 // Replace with the correct AMI for Amazon Linux 2 instance_type t2.micro // Or any instance type with 1 vCPU and 1 GiB memory tags { Name web-1 Type web } root_block_device { volume_size 8 // Or any desired size delete_on_termination true } provisioner remote-exec { inline [ sudo yum update -y, sudo yum install -y httpd, sudo systemctl start httpd, sudo bash -c echo \I made it! This is awesome!\ /var/www/html/index.html, sudo systemctl enable httpd ] connection { type ssh user ec2-user private_key file(~/.ssh/your_private_key.pem) // Replace with the path to your private key host self.public_ip } } security_group_ids [aws_security_group.web_sg.id] } resource aws_security_group web_sg { name web_sg description Security group for web server ingress { from_port 80 to_port 80 protocol tcp cidr_blocks [0.0.0.0/0] } }配置要点逐项解析provider 区域与选择接近你的区域同理region us-east-1可替换为你的目标区域。aws_instance资源ami需要替换为 Amazon Linux 2 在当前区域对应的真实 AMI ID可用aws ssm get-parameter查询最新 AMI 或从控制台 AMI 目录获取instance_type t2.micro满足 1 vCPU 1 GiB。tagsName web-1与Type web直接映射需求第 5 项。root_block_devicedelete_on_termination true对应需求第 3 项volume_size 8为 Amazon Linux 2 默认根卷大小可按需调整。remote-execprovisioner通过 SSH 在实例上执行引导命令实现需求第 4 项。这里与控制台 User Data 的思路等价但机制不同——User Data 由 cloud-init 在实例内自动执行而 provisioner 依赖你提供的私钥建立 SSH 连接后逐条执行。注意remote-exec仅在创建时执行且需要private_key与hostself.public_ip配置正确这是它比 User Data 更容易出错的环节。aws_security_group资源ingress块放行 TCP 80 端口、源0.0.0.0/0对应需求第 6 项通过security_group_ids挂载到实例。该安全组默认没有出站限制Terraform AWS provider 默认允许所有出站流量因此实例拉取 yum 软件包不受影响。从创建到销毁的完整工作流参考仓库中 Terraform Launch EC2 instance 练习 的标准操作序列# 1. 初始化下载 AWS provider 插件 terraform init # 2. 校验语法 terraform validate # 3. 预览将要创建的资源应看到 Plan: 2 to add实例 安全组 terraform plan # 4. 应用变更 terraform apply -auto-approve # 5. 再次 applyTerraform 对比真实基础设施与配置 # 未发现差异输出 0 added, 0 changed, 0 destroyed幂等性验证 # 6. 销毁资源避免产生持续费用 terraform destroy -auto-approve由于本练习的实例启用了delete_on_termination trueterraform destroy后实例、根卷与安全组都会被清理不会残留孤立 EBS 卷产生额外账单——这与练习存储随实例终止而删除的要求在 IaC 层面形成了闭环。四、两种实现方式的对比与选择建议维度控制台 User DataTerraform上手门槛低适合学习概念中需要掌握 HCL 语法与 CLI可重复性手工操作难以审计配置即代码可版本化、可复用引导执行机制cloud-init 自动执行无需额外凭证需要私钥建立 SSH 连接remote-exec适合场景一次性实验、快速验证生产交付、团队协作、CI/CD 集成仓库 AWS 主题页 的建议是优先用 IaC 完成练习。对初学者建议先用控制台完整走一遍本文第二节的流程建立感性认知再切换到 Terraform 复现这样既能理解每一步背后的云资源语义又能获得工程化的交付能力。五、延伸阅读继续巩固 EC2 知识链本练习只是 EC2 实战系列的起点仓库提供了完整的进阶练习路线均见 topics/aws/README.md 的 EC2 条目Security Groups验证入站规则的增删对访问的即时影响理解安全组有状态防火墙的本质EBS Volume Creation深入理解 Delete on Termination 与手动附加卷的生命周期差异Create AMI把配置好的实例固化为镜像实现快速批量复制Create EFS为多实例提供共享文件存储Terraform Launch EC2 instance掌握init/validate/plan/apply/destroy完整 IaC 工作流。完成上述练习后你将能独立完成启动实例 → 配置引导 → 固化镜像 → 规模化交付的完整链路为后续接触 Auto Scaling、负载均衡等更复杂的 AWS 架构打下扎实基础。赞分享文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载相关推荐AWS EC2 实战使用 User Data 与 Terraform 启动一个 Web 实例devops-exercises 演练AWS EC2 实战使用 User Data 与 Terraform 启动一个 Web 实例devops exercises 演练 本文基于开源仓库 de文档教程DevOps运维Hyperresearch 16步研究流水线完全解析从分解到可读性审计Hyperresearch 16步研究流水线完全解析从分解到可读性审计 Hyperresearch 是一款将 Claude Code 变成深度研究智能体de文档教程DevOps运维tweakcn 完整上手指南3步跑通本地环境到 shadcn/ui 主题导出tweakcn 完整上手指南3步跑通本地环境到 shadcn/ui 主题导出 用 shadcn/ui 做项目十有八九长一个样。tweakcn 是专为 sha文档教程DevOps运维上一篇Realtek RTL8125 2.5GbE网卡驱动从零开始的完整安装配置指南下一篇Obsidian GitHub Publisher 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

github.com/ZeroHawkeye/wordZero 将三列的表格 , 竖的排两个表格 2026/9/30 7:35:21

github.com/ZeroHawkeye/wordZero 将三列的表格 , 竖的排两个表格

根据你提供的 wordZero 库信息,将三列表格改为竖排排列两个表格,可以通过**嵌套表格**来实现。即在原表格的某个单元格内,再嵌入一个新的表格。### 实现思路wordZero 的 TableCell 结构支持嵌套表格(Tables 字段)。你可…

阅读更多 →
HR 避坑:2026 人才测评工具 5 大常见使用误区拆解 2026/9/30 7:35:21

HR 避坑:2026 人才测评工具 5 大常见使用误区拆解

过去一年里,人才测评工具的市场规模持续走高,全球员工绩效评估平台预计在2026年达到54亿美元。但工具多了,踩坑的人也多了。不少HR把测评买回来才发现:候选人不配合、报告看不懂、数据躺在后台没人用。问题不在于工具本身&#xf…

阅读更多 →
计算机网络备考全景对比:考公长线规划与期末突击的融合策略 2026/9/30 7:35:14

计算机网络备考全景对比:考公长线规划与期末突击的融合策略

1. 全景对比:考公式长线备考与期末突击的思维差异1.1 两种学习场景的底层逻辑先说个我观察了很久的现象。每年这个时候,后台私信都会涌进两类人:一类是准备考公的,问我计算机网络在行测、专业课里怎么拿分;另一类是期末…

阅读更多 →
URL过滤技术详解:原理、部署与绕过防护 2026/9/30 7:35:14

URL过滤技术详解:原理、部署与绕过防护

1. URL过滤到底是什么:从一次"被拦下的点击"说起去年有个同事在内部群里发了一个链接,说是某招聘平台给他推送的简历下载地址,结果点进去不到两秒,浏览器就弹出了公司的安全拦截页,上面赫然写着"该URL已…

阅读更多 →
一个人也能搞定!如何自己制作微信小程序?零代码保姆级教程 2026/9/30 7:35:14

一个人也能搞定!如何自己制作微信小程序?零代码保姆级教程

一个人开店忙不过来?做小程序也想自己来 很多个体老板一个人身兼数职,进货、收银、打扫全靠自己。想做个小程序减轻人力成本,但请人做又要额外花钱,也不放心交给外包。于是问题来了:一个人能不能自己做出能用的微信小程…

阅读更多 →
SpringBoot+Vue3+MyBatis城乡居民医保管理系统全栈开发实战 2026/9/30 7:35:14

SpringBoot+Vue3+MyBatis城乡居民医保管理系统全栈开发实战

这段时间好几个朋友在问城乡居民医保管理系统这类全栈项目怎么做,正好我手头有一套SpringBootVue3MyBatis的完整源码跑过业务,把整个开发过程和一些踩坑经验理一理。项目本身不复杂,但是麻雀虽小五脏俱全,涉及参保人员建档、缴费记…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉