Упаковщик с 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