使用 Packer 在 AWS 中实现部分不可变的基础设施?

使用 Packer 在 AWS 中实现部分不可变的基础设施?

我是一名非常年轻的系统工程师/承包商系统管理员,工作量很大,带宽要求很高,刚刚搬到一个互联网连接下载速度为 2mbps、上传速度为 20mbps 的区域。因此,我将我的 Debian 10 工作站迁移到 AWS,我需要一些建议。

我想使用 terraform(已完成 99%)、packer 和 ansible 管理我的工作站设置。我想创建一个脚本,每次更改 ansible 设置时运行该脚本,该脚本将使用 packer+ansible 创建一个新 AMI 并使用 Terraform 进行部署。

我希望我的主目录在所有版本的基础设施中都保持一致,因为我有大量的 vagrant boxes 和 pip venvs,里面填充了我想要的软件包,无论基础系统配置如何,这些软件包都应保持一致。当我添加 ssh 密钥、创建 hotwired vagrant 设置(值得再发一篇文章)等时,主目录将略微受到管理。这是目前的主要障碍。

我正在考虑使用第二个 EBS 卷并将其安装在 /home/ 上。这样做的问题是,当您从另一个实例创建 AMI 时,它将复制 EBS 并获取自己的 EBS ID。下次使用 Packer 创建 AMI 时,我需要在正在运行的实例上对 EBS 卷进行快照、附加和安装,但我没有看到使用 Packer 或 Ansible 执行此操作的明确方法。EFS 太慢了,不值得考虑。

基本上,在移动到 AWS 中的新实例时,无需从旧实例创建 ami,同时避免使用速度慢或成本高昂的组件(例如 EFS),这是一种保留生产实例数据的方法。我不能直接创建一个新实例,因为我希望我的 AMI 从基本 Debian 10 映像生成,以防止配置漂移。

答案1

这是一个意料之外的答案,可能不会被接受,但我认为这是一个值得一提的选项。请不要因为我的回答与预期不符而投票反对我。

使用 EFS 可能是最佳做法。虽然成本稍高一些,延迟也稍高一些,但对于这项任务来说还是不错的。

AWS 工作区

你有没有考虑过AWS 工作区? 它是 Ubuntu,但可能会解决您的基于云的工作站的问题。

S3 存储

S3 上的存储很便宜,而且通常足够快,特别是如果您的 VPC 中有一个 S3 网关。

使用 S3 的两个主要选项是:

  • 使用S3FS安装 S3 存储桶作为存储,使用 VPC 中的 S3 网关,您应该可以获得可接受的性能
  • 在启动、关闭时将数据与 S3 同步,您也可以使用 cron 进行同步。我相信使用 VPC 网关时 S3 的带宽是免费的,但您仍需为 put / get 操作付费,这应该是相当低的成本。

相关内容