Por que um problema “[Errno 2] Não existe tal arquivo ou diretório”, “rc” ocorre quando o Ansible é executado remotamente?

5

Em exibição:

- name: get vhosts
  command: rabbitmqctl list_vhosts
  register: vhosts
  changed_when: false

emitindo

sudo ansible-playbook file.yml

resulta em:

TASK [030.sensu : get vhosts] **************************************************
fatal: [IP]: FAILED! => {"changed": false, "cmd": "rabbitmqctl list_vhosts", 
"failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}

enquanto este erro não ocorrer se o ansible for executado no próprio sistema.

Discussão

1. O comando rc está faltando?

Emitir rc tanto localmente quanto remotamente resulta em:

bash: rc: command not found...

Se isso fosse um problema, a execução local do manual também falharia.

2. Este é um problema conhecido?

A consulta de "No such file or directory" rc ansible centos na internet resultou em este questionário .

De acordo com uma das respostas , o problema é causado por command . Usar shell resolveria o problema. A solução foi tentada, mas não resolveu o problema.

    
por 030 03.08.2016 / 18:12

2 respostas

7

O retorno do ansible é json. Bastante impresso:

{
  "changed": false,
  "cmd": "rabbitmqctl list_vhosts",
  "failed": true,
  "msg": "[Errno 2] No such file or directory",
  "rc": 2
}

Você notará msg contém "[Errno 2] Nenhum arquivo ou diretório". Em vez disso, rc é o código de retorno (saída), '2' no seu caso, do comando rabbitmqctl list_vhosts .

No shell (bash / sh / whatever), execute rabbitmqctl . Você pode não ter rabbitmqctl instalado. Ou, como EEAA legitimamente sugere, não está em $PATH . Em algumas distros (Debian / Ubuntu) /usr/sbin não está incluído no caminho dos usuários normais, mas está incluso no root.

    
por 03.08.2016 / 18:33
1

Adicionando become: true ao arquivo.yml:

- hosts:
    - <enter-IP>
  roles:
    - 030.sensu
  become: true

e executá-lo emitindo ansible-playbook file.yml resolveu o problema também.

    
por 04.08.2016 / 14:35