Назад | Перейти на главную страницу

Пакер с анзиблем с локальных работает, но с другого сервера запрашивает права root

Для некоторого контекста я использую упаковщик с ansible Provider для создания образов 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 работает в фоновом режиме с блокировкой: ничего.

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

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

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

Ubuntu 16.04 по умолчанию запускает uattended-upgrade автоматически (из коробки). Что происходит, так это то, что при первом открытии окна unattended-upgradedes блокирует apt (см. / Var / lib / dpkg / lock), а затем скрипты подготовки выдают ошибку, если они устанавливают что-либо через apt.

Подробнее см. Здесь https://github.com/ansible/ansible/issues/4355#issuecomment-286184925

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