Empacotador com ansible de obras locais, mas de outro servidor solicitam permissões de root

1

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).

    
por fmartingr 12.09.2017 / 15:20

1 resposta

1

Eu encontrei esse problema usando o packer para criar uma AWS AMI para o Ubuntu 16.04. Você está usando o Ubuntu?

O Ubuntu 16.04 tem como padrão a execução automática de upgrades automaticamente (fora da caixa). O que acontece é que na primeira vez que uma caixa é ativada, atualizações autônomas bloqueiam o apt (consulte / var / lib / dpkg / lock) e, em seguida, provisionam erros de script se instalarem qualquer coisa por meio do apt.

Veja aqui para mais detalhes link

Também aqui: - link

    
por 08.03.2018 / 12:17