使用 ansible、packer 和 aws 安装软件包的新问题

问题描述 投票:0回答:1

我们有一个系统,可以打包一些代码,构建一个 Web 服务器并将其全部捆绑到 AMI 中,准备在 AWS 上提供服务。

一切都工作正常,直到我更新了ansible和packer,我们还使用内置的convert命令将packer.json文件更新为新的hcl格式。

amazon-ebs.auto generated_1:致命:[默认]:失败! => {"changed": false, "msg": "没有匹配'build-essential'的包可用"}

ansible [核心 2.13.13] 打包机v1.10.2

我们使用此图像作为服务器的基础。

filters = {
    name                = "ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"
    root-device-type    = "ebs"
    virtualization-type = "hvm"
  }

现在当ansible开始安装一些我们需要的包时,这些包似乎有问题:

  • 构建必备
  • 主管

特别是。

我们尝试了不同的方法来进行 apt-get 更新,包括使用“shell”ansible 命令和常规的“apt”命令,以及缓存更新等的变体。

奇怪的是,我们可以打印到屏幕上的垃圾越多(例如在执行ansible playbook时使用--verbose),或者在文件上使用“cat”,例如我只是cat'd /etc/apt /sources.list 在安装软件包的任务之前,我们得到进一步的处理。这让我相信某处可能存在竞争条件,但我一生都无法弄清楚为什么。

这是我们用来安装软件包的命令。

- name: Install common dependencies
  apt:
    name:
      - htop
      - nano
      - wget
      - perl
      - unzip
      - tcpdump
      - build-essential
      - python3-distutils
      - libwww-perl
      - supervisor
      - mysql-client
    state: present

就像我之前提到的,在更新 ansible 和 packer 之前,这一切都完美无缺。

ubuntu ansible amazon-ami packer
1个回答
0
投票

我们遇到了类似的问题,经过大量挖掘后,我通过将

packer-plugin-amazon
从 1.3.1 升级到 1.3.2 来隔离该问题。所以,我所做的就是从 Packer 配置中排除该版本,至少现在是这样:

packer {
  required_plugins {
    amazon = {
      source  = "github.com/hashicorp/amazon"
      version = "~> 1, != 1.3.2"  # v1.3.2 has apt issues
    }
    ansible = {
      source  = "github.com/hashicorp/ansible"
      version = "~> 1"
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.