Для некоторого контекста я использую упаковщик с 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