Sander
ssh_args = -o ForwardAgent=yes -o ControlPersist=30s -o ServerAliveInterval=900 -o ServerAliveCountMax=10
Sander
я ansible делал 3 года назад, все помню - как плейбки готовить, но вот с некоторыми вещами я застреваю
Sander
главное есть старый проект как пример ... и что-то я не могу.
Кирилл
вообщем методология такая )
надо зайти руками на целевой хост, запустить в терминале tail -f /var/log/auth.log
проиграть плейбук, и смотреть в вывод консоли на удаленном хосте
будет видно, под каким пользователем плейбук пытается зайти на сервер и почему не пускает
Кирилл
/var/log/auth.log - путь к логам ssh в ubuntu дистре, какой у вас, не понятно
Отделение Bereke Bank
Sander
- есть root, alex, docker пользователи
- конекчусь через alex
- все пользователи под паролями,
- все имеют authorized_keys каждый пользовател в своей директории,
- права на файлы authorized_keys заданы 0600
- у ssh key есть passphrase
- алгоритм ключей ed25519, но ssh_config настроен что только с ним работает и коннектится через терминал отлично, но не через ansible
Sander
---
- hosts: test-master
tasks:
- name: "jajaja"
shell: "ls -al"
Sander
vars удалил только что
Sander
test-master ansible_host_name=test-master ansible_host=120.181.47.183
Кирилл
Sander
да, ансибл тоже ведь порт оказывает там есть в строчке
Кирилл
он где то описан?
Sander
-o Port=2568
Sander
[all:vars]
ansible_ssh_port={{ ssh_server_port }}
Кирилл
ssh_server_port - и где он задается?
Sander
group_vars/all
Sander
если я другой порт пропишу - то там сразу с ошибкой упадет
Sander
"msg": "Failed to connect to the host via ssh: OpenSSH_7.9p1, LibreSSL 2.7.3\
Sander
так что все нормально переменные подсасывает
UglyKoyote
а откуда тогда ошибка, если все переменные норм?
UglyKoyote
может стоит копать в сторону ошибки? а не пенять на ансибл
Кирилл
понятно
рекомендую тогда зайти на целевой хост и в режиме реального времени смотреть лог ssh - под каким пользователем приходит плейбук и почему ему отказывает
Sander
ansible-playbook -i inventories/production ./playbooks/setup/setup_new_server_master.yml -vvvv
Sander
ошибки то никакой нет, я скинул то что есть
Sander
он просто делает запросы и останавливается, не начиная даже первую таску
Sander
Sander
он походу под rsa коннектится
Sander
Aug 8 17:29:05 test-master sshd[1259]: rexec line 35: Deprecated option RSAAuthentication
Aug 8 17:29:05 test-master sshd[1259]: rexec line 47: Deprecated option RhostsRSAAuthentication
Aug 8 17:29:05 test-master sshd[1259]: reprocess config line 35: Deprecated option RSAAuthentication
Aug 8 17:29:05 test-master sshd[1259]: reprocess config line 47: Deprecated option RhostsRSAAuthentication
Sander
@zCirill
Sander
теперь бы понять - как сделать чтоб ansible использовал только ed25519
Кирилл
это ругань на тему конфига, говорит что в конфиге сервера sshd есть опции Deprecated
Кирилл
надо смотреть на попытки логина при проигрывании плейбука
Sander
ахх
Sander
черт
Sander
оно есть в конфиге у меня
Sander
но это проблему не решает (
Sander
непонятно тогда мне что он не коннектит ansible-ом
Sander
да так и делал
Sander
я скинул уже что он мне туда записвал в лог файл
Sander
var/log/auth.log - верно?
Кирилл
Sander
debian 10
Кирилл
вот такой путь /var/log/auth.log
Кирилл
Aug 8 20:40:36 w2 sshd[9244]: Accepted publickey for ansible from 127.0.0.1 port 49360 ssh2: RSA SHA256:SqA+ABNZ1j2I
Aug 8 20:40:36 w2 sshd[9244]: pam_unix(sshd:session): session opened for user ansible by (uid=0)
Aug 8 20:40:36 w2 systemd-logind[208]: New session 112876 of user ansible.
Кирилл
вот такой кусок лога о том, что пользователь успешно залогинился на сервер
Кирилл
и вот такой кусок, когда неверно
Aug 8 20:45:14 w1 sshd[21097]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=127.0.0.1
Aug 8 20:45:16 w1 sshd[21097]: Failed password for invalid user ansible from 127.0.0.1 port 39776 ssh2
Aug 8 20:45:17 w1 sshd[21097]: pam_unix(sshd:auth): check pass; user unknown
Aug 8 20:45:19 w1 sshd[21097]: Failed password for invalid user ansible from 127.0.0.1 port 39776 ssh2
Aug 8 20:45:19 w1 sshd[21097]: Connection closed by invalid user ansible 127.0.0.1 port 39776 [preauth]
Sander
только это:
Aug 8 17:55:12 test-master sshd[1337]: Connection closed by authenticating user alex 41.53.7.239 port 43561 [preauth]
Aug 8 17:55:13 test-master sshd[1340]: rexec line 35: Deprecated option RSAAuthentication
Aug 8 17:55:13 test-master sshd[1340]: rexec line 47: Deprecated option RhostsRSAAuthentication
Aug 8 17:55:13 test-master sshd[1340]: reprocess config line 35: Deprecated option RSAAuthentication
Aug 8 17:55:13 test-master sshd[1340]: reprocess config line 47: Deprecated option RhostsRSAAuthentication
Sander
если отключаю ansible плейбук - то вот такая строчка появляется Aug 8 17:55:12 test-master sshd[1337]: Connection closed by authenticating user alex 41.53.7.239 port 43561 [preauth]
Sander
если по ssh коннекчусь нормально - то логи пишет конечно, что был приконекчен
Sander
но с плейбуком мимо как-то, вот только это что я написал
Кирилл
напиши тестовый плейбук, в котором только ping будет
Кирилл
cat ping.yml
---
- name: Ping host
hosts: w1
tasks:
- name: Check connect to w1
ping:
Кирилл
указывая в качестве хоста нужный тебе хост и посмотри, что произойдет при отработке плейбука
Sander
да так же стоит @zCirill
Кирилл
тогда сожалею )
Кирилл
я иссяк
Sander
раньше помню была проблема что сессия не передавалась, но там есть флажок все окей, сейчас то что не так не пойму (
Sergey
@sander92 у тебя в итоге плейбук пользователем ansible соединяется?
Sander
ребята привет
Sander
@tnt4brain я уже справился ) там лишные конфиги были в all:vars, а так все было правильно у меня.
Sander
раньше проблем со старой версией не было, в новой как-то все более жестко
Sander
у меня еще один вопрос, мне надо отправить json переменной в "docker_container",
но видимо json не совсем валидный, так как я делаю это таким образом:
env_lalala '{
"myName": "love-job"
}'
может как-то можно файл считывать в credentials и запихивать как переменную в docker_container модуль.
Sander
просто не получается почему-то передать валидный json
Sander
"{{ env_config_json | string | quote }}"
Iwan
Sander
docker_container:
env:
LALALA_CONFIGURATION: "{{ env_config_lalala | trim | quote }}"
Sander
Iwan
Sander
но есть идея сделать все через systemd
Sander
это будет намного надежней
Sander
слишком много переменных, приложение хочет json-чик
Sander
я наверное просто через systemd буду делать docker run
Iwan
Sander
Sander
в инвентори можно и json хранить вместо yaml, но почему-то приложение ломается когда передаю json,
хотя я запыскаю через docker run вручную и все отлично работает.