}}'
ansible_python_interpreter='/usr/bin/env python3'
[local]
192.168.31.203 ansible_port=22000
update.yaml:
---
- name: Update standard packages
hosts: local
become: true
vars_files:
- '{{ inventory_dir }}/vars/vars.yaml'
tasks:
- name: Update & refresh packages
apt: update_cache=yes cache_valid_time=3600
- name: Upgrade all apt packages
apt: upgrade=dist
Запускаем:
ansible-playbook ./roles/general-mahine-prepare/tasks/update.yaml -vvv
И получаем мужской половой орган:
TASK [Gathering Facts]
task path: /home/kenyawest/ansible/roles/general-mahine-prepare/tasks/update.yaml:2
<192.168.31.203> ESTABLISH SSH CONNECTION FOR USER: kenyawest
<192.168.31.203> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22000 -o 'IdentityFile="/home/kenyawest/.ssh/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="kenyawest"' -o ConnectTimeout=10 -o 'ControlPath="/home/kenyawest/.ansible/cp/a4281441d3"' 192.168.31.203 '/bin/sh -c '"'"'echo ~kenyawest && sleep 0'"'"''
<192.168.31.203> (255, b'', b'kenyawest@192.168.31.203: Permission denied (publickey,password).\r\n')
fatal: [192.168.31.203]: UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: kenyawest@192.168.31.203: Permission denied (publickey,password).",
"unreachable": true
}
192.168.31.203: unreachable=1
Казалось бы, ошибка пароля? Но ведь я с этой же машины по тому же юзеру и паролю по ssh -p 22000 kenyawest@192.168.31.203 захожу спокойно!
В чем проблема? ufw везде отключен
Достаточно было добавить ansible_connection=local в hosts.ini в той же строчке с хостом... А я думал, что эта опция работает только для серверов на localhost...
Я дебик. ansible_connection=local делает все изменения на моей машине, а не на конечном хосте, на который я и должен накатывать плейбук. Так что проблема ещё актуальна. UPD: Так, стоп. Убрал ту злосчастную строку ansible_connection=local, но проблема не появилась! Как-то сама собой разрешилась. Магия недевственная…
я правильно понял, что при подключении по SSH в интерактивном режиме из терминала вы спокойно заходите на сервер без ввода пароля от пользователя и пароля от ssh-ключа, а если делаете то же самое через ансибл, то не работает?
У одного моего коллеги на старой работе было такое поведение при работе из WSL, решилось переустановкой WSL-дистрибутива, мы коллективно всем отделом решили, что он себе что-то закорраптил в системе.
Ага. Сейчас вспомнил... проблема, видимо, решилась через ssh-copy-id, я утром эту команду выполнил.
Обсуждают сегодня