Para um pouco de contexto, estou usando o packer com um ansible provisioner para criar imagens da AMI na AWS.
As partes relevantes do empacotador e ansible:
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
Na minha máquina local, tudo corre bem.
Mas como parte de um CI, usando nosso servidor Jenkins para executar este script de empacotador, mas ele falha na primeira tarefa ansible que possui um become
no lugar, nesse caso o primeiro passo é instalar algumas ferramentas via apt
module:
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?"
Eu verifiquei as permissões, o usuário e até mesmo se havia outro apt
em execução no plano de fundo que tinha o bloqueio: nada.
O mais interessante é que se eu substituir o ansible por um command
com sudo aptitude ...
ele funciona, e também que antes da tarefa ansible há um provisionador de shell que também executa apt-get
sem erros.
Mais uma vez, este trabalho da minha máquina (e de dois outros computadores), não apenas de um servidor. Eu não tenho um ansible.cfg em qualquer máquina (nem mesmo a padrão).