Acho que já usei o Ansible para controlar uma VM Ubuntu 16.04. Eu definitivamente posso usar essa mesma tarefa para controlar com sucesso uma VM do Debian 9. No entanto, com uma VM do Ubuntu 18.04, ele falha com "Falha de autenticação ou permissão. Em alguns casos, você pode ter sido capaz de autenticar e não ter permissões no diretório de destino ..."
Por quê?
$ ansible-playbook -b -K -v playbooks/all-bootstrap.yml -l ubuntu1804-vm -t copy-test
Using /home/alan-sysop/ansible/ansible.cfg as config file
SUDO password:
PLAY [all] *********************************************************************
TASK [ansible-target : Basic test of copy module] ******************************
fatal: [ubuntu1804-vm]: UNREACHABLE! => {"changed": false, "msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529057459.23-56386111798122 '\" && echo ansible-tmp-1529057459.23-56386111798122=\"' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529057459.23-56386111798122 '\" ), exited with result 1", "unreachable": true}
PLAY RECAP *********************************************************************
ubuntu1804-vm : ok=0 changed=0 unreachable=1 failed=0
EDIT: detalhamento extra mostra erro mais específico
Diz "mkdir: não é possível criar o diretório \ xe2 \ x80 \ x98 / home / alan-sysop / .ansible \ xe2 \ x80 \ x99: Permissão negada '.
$ ansible-playbook -b -K -vvv playbooks/all-bootstrap.yml -l ubuntu1804-vm -t copy-test
ansible-playbook 2.5.2
config file = /home/alan-sysop/ansible/ansible.cfg
configured module search path = [u'/home/alan-sysop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 2.7.15 (default, May 16 2018, 17:50:09) [GCC 8.1.1 20180502 (Red Hat 8.1.1-1)]
Using /home/alan-sysop/ansible/ansible.cfg as config file
SUDO password:
Parsed /home/alan-sysop/ansible/inventory inventory source with ini plugin
statically imported: /home/alan-sysop/ansible/roles/ansible-target/tasks/main-tasks.yml
statically imported: /home/alan-sysop/ansible/roles/ansible-target/tasks/raw.yml
statically imported: /home/alan-sysop/ansible/roles/ansible-target/tasks/nonraw.yml
PLAYBOOK: all-bootstrap.yml **************************************************************************************************************************
1 plays in playbooks/all-bootstrap.yml
PLAY [all] *******************************************************************************************************************************************
META: ran handlers
TASK [ansible-target : Basic test of copy module] ****************************************************************************************************
task path: /home/alan-sysop/ansible/roles/ansible-target/tasks/nonraw.yml:78
<ubuntu1804-vm.local> ESTABLISH SSH CONNECTION FOR USER: None
<ubuntu1804-vm.local> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/alan-sysop/.ansible/cp/2b9a0eeef8 ubuntu1804-vm.local '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<ubuntu1804-vm.local> (0, '/home/alan-sysop\n', '')
<ubuntu1804-vm.local> ESTABLISH SSH CONNECTION FOR USER: None
<ubuntu1804-vm.local> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/alan-sysop/.ansible/cp/2b9a0eeef8 ubuntu1804-vm.local '/bin/sh -c '"'"'( umask 77 && mkdir -p "' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529058132.74-222830721646724 '" && echo ansible-tmp-1529058132.74-222830721646724="' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529058132.74-222830721646724 '" ) && sleep 0'"'"''
<ubuntu1804-vm.local> (1, '', 'mkdir: cannot create directory \xe2\x80\x98/home/alan-sysop/.ansible\xe2\x80\x99: Permission denied\n')
fatal: [ubuntu1804-vm]: UNREACHABLE! => {
"changed": false,
"msg": "Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: ( umask 77 && mkdir -p \"' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529058132.74-222830721646724 '\" && echo ansible-tmp-1529058132.74-222830721646724=\"' echo /home/alan-sysop/.ansible/tmp/ansible-tmp-1529058132.74-222830721646724 '\" ), exited with result 1",
"unreachable": true
}
PLAY RECAP *******************************************************************************************************************************************
ubuntu1804-vm : ok=0 changed=0 unreachable=1 failed=0
Debian 9 VM para comparação
$ ansible-playbook -b -K -v playbooks/all-bootstrap.yml -l debian9-vm -t copy-test
Using /home/alan-sysop/ansible/ansible.cfg as config file
SUDO password:
PLAY [all] *********************************************************************
TASK [ansible-target : Basic test of copy module] ******************************
changed: [debian9-vm] => {"changed": true, "checksum": "27b41e0724c1aa99931b9e753b639563e3996257", "dest": "/ansible-managed/ansible-target/test-file.txt", "gid": 0, "group": "root", "md5sum": "145fab51c12c1f30714dd15c536f0a7a", "mode": "0644", "owner": "root", "size": 56, "src": "/home/alan-sysop/.ansible/tmp/ansible-tmp-1529057600.23-245931452134186/source", "state": "file", "uid": 0}
PLAY RECAP *********************************************************************
debian9-vm : ok=1 changed=1 unreachable=0 failed=0
(e o teste de idempotência:)
$ ansible-playbook -b -K -v playbooks/all-bootstrap.yml -l debian9-vm -t copy-test
Using /home/alan-sysop/ansible/ansible.cfg as config file
SUDO password:
PLAY [all] *********************************************************************
TASK [ansible-target : Basic test of copy module] ******************************
ok: [debian9-vm] => {"changed": false, "checksum": "27b41e0724c1aa99931b9e753b639563e3996257", "dest": "/ansible-managed/ansible-target/test-file.txt", "gid": 0, "group": "root", "mode": "0644", "owner": "root", "path": "/ansible-managed/ansible-target/test-file.txt", "size": 56, "state": "file", "uid": 0}
PLAY RECAP *********************************************************************
debian9-vm : ok=1 changed=0 unreachable=0 failed=0
Tarefa Ansible
- name: Basic test of copy module
copy:
src: test-file.txt
dest: /ansible-managed/ansible-target/
tags: "copy-test"
test-file.txt
contém uma única linha:
This file is used as a test of the Ansible copy module.
Versão Ansible
$ ansible-playbook --version
ansible-playbook 2.5.2
config file = /home/alan-sysop/ansible/ansible.cfg
configured module search path = [u'/home/alan-sysop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 2.7.15 (default, May 16 2018, 17:50:09) [GCC 8.1.1 20180502 (Red Hat 8.1.1-1)]
como instalado a partir das reposições do Fedora Workstation 28.