Для некоторого контекста я использую упаковщик с 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 для запуска этого сценария упаковщика, но он терпит неудачу в первой доступной задаче, для которой установлено стало
, в этом случае первым шагом является установка некоторых инструментов через модуль 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
, у которого была блокировка: ничего.
Более интересно то, что если я заменю недоступен с помощью команды
с помощью sudo aptitude ...
он работает, а также то, что до выполнения задачи ansible существует средство обеспечения оболочки, которое также запускает apt-get
без ошибок.
Опять же, эта работа выполняется с моей машины (и с двух других компьютеров), просто не с сервера. У меня нет файла ansible.cfg ни на одном компьютере (даже на компьютере по умолчанию).
Я столкнулся с этой проблемой, используя упаковщик для создания AMI AWS для Ubuntu 16.04. Вы используете Ubuntu?
Ubuntu 16.04 по умолчанию запускает uattended-updates автоматически (из коробки). Что происходит, так это то, что при первом открытии окна автоматическое обновление блокирует apt (см. / Var / lib / dpkg / lock), а затем выдает ошибку сценариев подготовки, если они устанавливают что-либо через apt.
Подробнее см. Здесь подробнее https://github.com/ansible/ansible/issues/4355#issuecomment-286184925
Также здесь: - https://github.com/geerlingguy/packer-ubuntu-1604/issues/3