本地的打包程序可以使用 ansible 进行打包,但另一台服务器的打包程序需要 root 权限

本地的打包程序可以使用 ansible 进行打包,但另一台服务器的打包程序需要 root 权限

为了提供一些背景信息,我正在使用带有 ansible provisioner 的 packer 在 AWS 上创建 AMI 映像。

packer与ansible相关部分:

packer.json

"provisioners": [{
  "type": "shell",
  "inline": [
    "sleep 15",
    "sudo apt-get update",
    "sudo apt-get install -y aptitude python"
  ]
}, {
  "type": "ansible",
  "playbook_file": "../provision/ansible-playbook.yml",
  "groups": ["webworker"],
  "extra_arguments": [
    "--become-method=sudo"
  ]
}]

任务.yml

- name: Install tools
  become: true
  apt:
    name: "{{ item }}"
    state: latest
  with_items:
    - build-essential
    - git

在我的本地机器上,一切正常。

但是作为 CI 的一部分,使用我们的 Jenkins 服务器来运行这个打包脚本,但它在第一个已到位的 ansible 任务上失败become,在这种情况下,第一步是通过apt模块安装一些工具:

amazon-ebs:         "W: chmod 0700 of directory /var/lib/apt/lists/partial failed - SetupAPTPartialDirectory (1: Operation not permitted)",
amazon-ebs:         "E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)",
amazon-ebs:         "E: Unable to lock directory /var/lib/apt/lists/",
amazon-ebs:         "W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)",
amazon-ebs:         "W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)",
amazon-ebs:         "E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)",
amazon-ebs:         "E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?"

我已经检查了权限、用户,甚至检查了apt后台是否有另一个带有锁的程序在运行:什么都没有。

command更有趣的是,如果我用with替换 ansible,sudo aptitude ...它就可以工作,并且在 ansible 任务之前有一个 shell 配置程序也可以apt-get无错误运行。

再次强调,这在我的计算机上有效(以及在另外两台计算机上有效),但在服务器上无效。我在任何计算机上都没有 ansible.cfg(甚至默认的计算机也没有)。

答案1

我在使用打包程序为 Ubuntu 16.04 创建 AWS AMI 时遇到了这个问题。您使用的是 Ubuntu 吗?

Ubuntu 16.04 默认自动运行 uattended-upgrades(开箱即用)。第一次启动机器时,unattended-upgrades 会锁定 apt(参见 /var/lib/dpkg/lock),然后如果配置脚本通过 apt 安装任何东西,就会出错。

点击此处了解更多详细信息https://github.com/ansible/ansible/issues/4355#issuecomment-286184925

也在这里:- https://github.com/geerlingguy/packer-ubuntu-1604/issues/3

相关内容