ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

devops-exercises 实战:从运行中的 EC2 实例创建自定义 AMI 并启动新实例

devops-exercises 实战:从运行中的 EC2 实例创建自定义 AMI 并启动新实例 文档教程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 仓库中 AWS 模块的create_ami练习系统讲解如何在一台运行中的 EC2 实例上完成系统定制后将其制作为自定义 AMIAmazon Machine Image并基于该 AMI 启动一台全新实例以验证定制内容是否完整保留。读者将掌握控制台与 CLI 两种创建 AMI 的完整路径理解 AMI、EBS 快照与实例启动之间的底层关系并能在真实环境中复现一套定制 → 镜像化 → 克隆部署的完整工作流。练习目标与前置条件该练习的原始定义见 练习文件其要求与目标非常明确前置条件至少有一台正在运行的 EC2 实例running EC2 instance。目标 1在实例的操作系统中做出一些修改例如创建文件、修改文件、安装软件包等。目标 2从这台运行中的 EC2 实例创建一份 AMI 镜像。目标 3使用刚创建的自定义 AMI 启动一台新实例并确认修改已被继承。官方参考解法见 解法文件其核心思路是先定制、再镜像、后克隆三步法。仓库的 AWS 模块 README 同时提醒部分练习会产生真实费用、无法在免费套餐内完成且官方解法基于 AWS 控制台更推荐使用 IaC如 Terraform、Pulumi来完成——本指南将在控制台方案之外补充 CLI 与 IaC 思路。AMI 是什么理解镜像的底层构成在动手之前先明确 AMI 的概念。仓库的 AWS 模块 README 中专门设有 AMI 问答区可以提炼出以下关键事实定义AMIAmazon Machine Image提供了启动一台实例所需的全部信息——包括操作系统、启动卷由 EBS 快照承载、启动权限与块设备映射等。来源分类AMI 主要有三类——个人 AMI自己创建、AWS Marketplace AMI他人发布多为付费、公共 AMIAWS 官方提供如练习中反复出现的 Amazon Linux 2。区域性AMI 是针对特定区域构建的但可以通过复制Copy跨区域迁移。创建流程高层视角先启动实例 → 定制实例安装软件包、修改 OS 配置→ 停止实例避免数据一致性问题→ 创建 EBS 快照并构建 AMI → 用该 AMI 启动实例进行验证。这一点与本练习的步骤完全吻合练习的官方解法没有要求显式操作快照但 AMI 在底层正是由 EBS 快照与元数据构成的——理解了这一点就理解了为什么修改操作系统内容最终能被完整继承到新实例。方案一控制台操作仓库官方解法按照 解法文件 的步骤完整流程如下每一步都补充了可操作的细节步骤 1连接到你的 EC2 实例选择 SSH、EC2 Instance Connect 控制台或 Session Manager 等任意方式登录实例。例如使用密钥对直连ssh -i your-key.pem ec2-user实例公网IP步骤 2在操作系统中做出修改这是整个练习的定制环节目的是让这台实例与通用公共镜像产生差异。可以做任意组合的修改例如# 创建文件 touch /home/ec2-user/custom-marker.txt echo custom-ami-demo /home/ec2-user/custom-marker.txt # 安装软件包Amazon Linux 2 示例 sudo yum update -y sudo yum install -y htop # 修改配置文件 sudo bash -c echo server_name custom-ami-demo; /etc/nginx/conf.d/demo.conf这些修改会被写入实例的 EBS 根卷从而成为后续 AMI 的内容来源。步骤 3进入 EC2 服务控制台在 AWS 控制台中切换到 EC2 服务进入Instances实例列表找到刚才完成定制的实例。步骤 4右键实例 → Image and templates → Create image对目标实例点击右键选择Image and templates子菜单下的Create image。控制台会弹出创建镜像对话框这里需要关注的典型配置项包括Image name镜像名称建议包含用途与版本信息例如my-custom-ami-v1Image description镜像描述可记录定制内容摘要No reboot 选项控制台对应 No reboot 复选框默认情况下 AWS 会先重启实例以确保文件系统一致性勾选该选项可避免重启、加快镜像创建但要求文件系统本身处于一致状态块设备映射默认继承原实例的卷配置通常无需改动。步骤 5填写名称并点击 Create image填写好 Image name 后点击Create image。镜像创建不是即时的AWS 会先为相关 EBS 卷创建快照再基于快照构建 AMI。可以在左侧菜单AMIs页面查看进度状态从pending变为available后即可使用。在Snapshots页面下可以看到伴随生成的 EBS 快照这也印证了上一节AMI 底层由 EBS 快照构成的原理——相关快照操作可参考仓库中的 快照练习解法。步骤 6使用自定义 AMI 启动新实例镜像状态变为available后点击Launch instances from AMI或进入 AMIs 列表选择镜像后启动。在实例配置向导中选择镜像Choose an Amazon Machine Image的步骤里选中My AMIs选项卡下的自定义镜像其余步骤实例类型、存储、安全组等与普通启动一致。启动完成后登录新实例验证定制内容ssh -i your-key.pem ec2-user新实例公网IP cat /home/ec2-user/custom-marker.txt # 应输出 custom-ami-demo htop # 应已安装如果输出符合预期说明定制内容已通过 AMI 完整克隆到新实例练习目标全部达成。方案二AWS CLI 自动化创建若希望脚本化、可重复执行可使用 AWS CLI。核心命令是aws ec2 create-imageaws ec2 create-image \ --instance-id i-0abcdef1234567890 \ --name my-custom-ami-v1 \ --description AMI created from customized web instance \ --no-reboot--instance-id要镜像化的源实例 ID--nameAMI 名称需在区域内唯一--no-reboot跳过重启默认会重启以确保一致性与控制的台选项对应命令返回ImageId形如ami-xxxx可用于后续启动。验证镜像创建结果aws ec2 describe-images --image-ids ami-xxxx --region us-east-1使用该 AMI 启动新实例aws ec2 run-instances \ --image-id ami-xxxx \ --instance-type t2.micro \ --key-name your-key \ --security-group-ids sg-xxxx \ --subnet-id subnet-xxxx将 CLI 封装为脚本后即可把定制实例 → 生成镜像 → 批量克隆固化为团队内的标准发布流程。结合仓库其他练习AMI 在实战链路中的位置AMI 创建并非孤立操作仓库中多个 AWS 练习共同构成一条完整的实践链路本练习是其中承上启下的一环上游——如何获得一台可定制实例启动 EC2 Web 实例练习 演示了如何用 Amazon Linux 2 启动实例并通过 EC2 User Data 在首次启动时自动安装 httpd、写入首页内容。这正是本练习运行中的实例的常见来源你也可以把 User Data 的引导脚本效果固化进 AMI实现一次引导、到处克隆。中游——本练习把定制结果固化为 AMI。下游——镜像的规模化使用Auto Scaling Groups 基础练习 展示了在创建启动模板Launch Template时选择 AMI如 Amazon Linux 2随后 ASG 依据该模板批量扩容——若将自定义 AMI 填入启动模板则扩出的每台实例都自动携带你的定制内容这正是 AMI 在生产中的核心价值Spot 实例练习 在发起 Spot 请求时同样需要指定 AMI自定义 AMI 可以帮助 Spot 实例在数分钟内即可投入服务。仓库的 AWS 模块 README 还建议优先采用 IaC如 Terraform、Pulumi复现这些练习你可以在 new_vpc 练习 与 subnets 练习 中看到仓库提供的 Terraform/Pulumi 配套文件作为把本练习升级为基础设施即代码的起点。关键原理与注意事项数据一致性官方解法直接对运行中的实例创建镜像。AWS 的默认行为是临时重启实例以确保文件系统一致对应--no-reboot选项的反面。对于写入中的数据库、日志等场景建议先停止实例或使用--no-reboot并确保应用处于一致状态这也是 AWS 模块 README 中停止实例以避免数据完整性问题的的原因所在。区域隔离AMI 只存在于创建它的区域跨区域使用必须执行复制镜像操作aws ec2 copy-image复制后在新区域获得新的ImageId。费用提示镜像由 EBS 快照支撑快照与存储会持续产生费用仓库 README 也提示部分练习无法在免费套餐内完成。练习完成后可删除不再使用的 AMI 与快照删除 AMI 后其底层快照不会自动删除需手动清理以避免持续计费。验证闭环镜像的价值必须通过用镜像启动新实例并验证来确认——这正是本练习目标 3 的意义所在切勿省略。小结本练习用最小的资源消耗完整覆盖了 AWS 镜像化的核心链路定制一台实例 → 基于其 EBS 卷生成 AMI → 用 AMI 启动克隆实例并验证。配合仓库中 启动实例练习、快照练习 与 Auto Scaling 练习 串读你可以进一步理解 AMI 在弹性伸缩、批量部署与跨区域容灾中的生产价值并把同样的镜像化能力迁移到 Terraform、Pulumi 等 IaC 工作流中。赞分享文档教程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点击查看免费下载相关推荐RTranslator Android 离线翻译快速上手RTranslator Android 离线翻译快速上手 手机在机场信号不好柜台的人开始说泰语你怎么办RTranslator 是一款开源的 Android文档教程DevOps运维GroundingDINO SwinT vs SwinB开放集目标检测模型配置选型完全指南GroundingDINO SwinT vs SwinB开放集目标检测模型配置选型完全指南 GroundingDINO 是 ECCV 2024 的开放集目标检文档教程DevOps运维Hyperresearch 16步研究流水线完全解析从分解到可读性审计Hyperresearch 16步研究流水线完全解析从分解到可读性审计 Hyperresearch 是一款将 Claude Code 变成深度研究智能体de文档教程DevOps运维上一篇3个颠覆认知的技术突破让原神玩家彻底摆脱重复劳动下一篇RePKGWallpaper Engine资源处理的全流程解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表