Упаковщик с ansible от локальных работ, но с другого сервера запрашивают права root

Для некоторого контекста я использую упаковщик с ANSI-провайдером для создания образов AMI в AWS.

Соответствующие части упаковщика и ответвления:

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"
  ]
}]

tasks.yml

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

На моей локальной машине все идет нормально.

Но, как часть CI, мы используем наш сервер Jenkins для запуска этого сценария упаковщика, но он завершается неудачно при первой заданной задаче, которая имеет 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 работает в фоновом режиме, который был заблокирован: ничего.

Более интересным является то, что если я заменю ANSIBLE на command с sudo aptitude ... это работает, а также, что перед заданием ansible есть поставщик оболочки, который также запускается apt-get без ошибок.

Опять же, эта работа с моей машины (и с двух других компьютеров), а не с сервера. У меня нет ansible.cfg ни на одной машине (даже по умолчанию).

1 ответ

Решение

Я столкнулся с этой проблемой, используя упаковщик для создания AWS AMI для Ubuntu 16.04. Вы используете Ubuntu?

Ubuntu 16.04 по умолчанию запускает автоматические обновления uattended (из коробки). Происходит следующее: при первом запуске блока автоматическое обновление блокирует apt (см. / Var/lib/dpkg/lock), а затем выдает ошибки сценариям инициализации, если они устанавливают что-либо через apt.

Подробнее смотрите здесь https://github.com/ansible/ansible/issues/4355

Также здесь: - https://github.com/geerlingguy/packer-ubuntu-1604/issues/3

Другие вопросы по тегам