Девопсы есть тут / ansible вопрос?

User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

По какой-то странной причине, ansible переходит на нечто, под названием Paramiko при использовании password authentication.
Вопрос - как научить Paramiko подцеплять ~/.ssh/config???
zVlad
Уже с Приветом
Posts: 16208
Joined: 30 Apr 2003 16:43

Re: Девопсы есть тут / ansible вопрос?

Post by zVlad »

M. Ridcully wrote: 12 Jul 2017 00:27 По какой-то странной причине, ansible переходит на нечто, под названием Paramiko при использовании password authentication.
Вопрос - как научить Paramiko подцеплять ~/.ssh/config???
Да тут все просто: не надо пепелацу без гравицапы из гаража выкатывать.
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Девопсы есть тут / ansible вопрос?

Post by Oleg-NY »

Сомневаюсь, что чисто питоновский ssh клент понимает OpenSSH-вский конфиг. Хотя все возможно. Я не в курсе деталей имплементации Paramiko.
kostik78
Уже с Приветом
Posts: 3180
Joined: 17 May 2007 14:07

Re: Девопсы есть тут / ansible вопрос?

Post by kostik78 »

M. Ridcully wrote: 12 Jul 2017 00:27 По какой-то странной причине, ansible переходит на нечто, под названием Paramiko при использовании password authentication.
Вопрос - как научить Paramiko подцеплять ~/.ssh/config???
Тока что проверил ansible 2.2.1.0 использует ssh не Paramiko. Paramiko был дефолтовым в самом начале жизни Ansible. Сейчас по умолчанию используется ssh (Linux and Mac OS X). Про винду не знаю.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

kostik78 wrote: 12 Jul 2017 15:43
M. Ridcully wrote: 12 Jul 2017 00:27 По какой-то странной причине, ansible переходит на нечто, под названием Paramiko при использовании password authentication.
Вопрос - как научить Paramiko подцеплять ~/.ssh/config???
Тока что проверил ansible 2.2.1.0 использует ssh не Paramiko. Paramiko был дефолтовым в самом начале жизни Ansible. Сейчас по умолчанию используется ssh (Linux and Mac OS X). Про винду не знаю.
Речь о случае, когда использую --ask-pass опцию. У меня молчаливо (!) переходит на Paramiko. Пришлось, блин, в исходники лезть, чтобы понять, почему одна и та же команда работает работает с использованием ключей, но не находит хост, если добавляешь -k / --ask-pass.

Ну хрен с ним, пускай используют Paramiko, если им нужно. Но пусть эта библиотека хотя бы ~/.ssh/config понимает!
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Девопсы есть тут / ansible вопрос?

Post by Oleg-NY »

M. Ridcully wrote: 12 Jul 2017 16:15 Ну хрен с ним, пускай используют Paramiko, если им нужно. Но пусть эта библиотека хотя бы ~/.ssh/config понимает!
Ну это как бы врядли! Все-таки OpenSSH и Paramiko из сильно разных бочек. Другое дело какой _реально_ метод SSH аутентификации --ask-pass опция подразумевает. Это может быть и "password", и "keyboard-interactive"... В последнем случае не мудрено, что они переключаются на встроенный клиент.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

Oleg-NY wrote: 12 Jul 2017 17:19
M. Ridcully wrote: 12 Jul 2017 16:15 Ну хрен с ним, пускай используют Paramiko, если им нужно. Но пусть эта библиотека хотя бы ~/.ssh/config понимает!
Ну это как бы врядли! Все-таки OpenSSH и Paramiko из сильно разных бочек. Другое дело какой _реально_ метод SSH аутентификации --ask-pass опция подразумевает. Это может быть и "password", и "keyboard-interactive"... В последнем случае не мудрено, что они переключаются на встроенный клиент.
Ну хорошо, а как с этим бороться-то? Задача - "bootstrap" хоста. Вот как сейчас происходит:
1. Создаю VM;
2. прописываю её имя в ~/.ssh/config;
3. вручную лезу на неё по паролю, добавляю свой ключ в authorized_keys, редактирую /etc/sudoers для беспарольного sudo, устанавливаю Питон;
4. тут уже ansible работает по-человечески.

Задача - автоматизировать пункт 3. По-идее, bash скрипт написать можно, наверное, но чего-то пока не понял, как его так написать, чтобы можно было из него отредактировать sudoers.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Девопсы есть тут / ansible вопрос?

Post by АццкоМото »

В суду же вроде пароль можно параметром передавать (не у компа, не могу проверить)
Мат на форуме запрещен, блдж!
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Девопсы есть тут / ansible вопрос?

Post by Oleg-NY »

Так вы выяснили почему они переключаются на Paramiko? Если не можете запретить "keyboard-interactive" на сервере, то попробуйте сделать это на клиенте (KbdInteractiveAuthentication в вашем ~/.ssh/config). Может прокатит...
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

Oleg-NY wrote: 12 Jul 2017 18:40 Так вы выяснили почему они переключаются на Paramiko?
Якобы, баг на OSX: https://github.com/ansible/ansible/blob ... xt.py#L632
Oleg-NY wrote: 12 Jul 2017 18:40 Если не можете запретить "keyboard-interactive" на сервере, то попробуйте сделать это на клиенте (KbdInteractiveAuthentication в вашем ~/.ssh/config). Может прокатит...
Я вас не понял. Мне как раз по паролю и нужно влезть, так как ключей там никаких ещё нету.
Проблема в том, что Paramiko даже имени их ~/.ssh/config не понимает.
Oleg-NY
Уже с Приветом
Posts: 2481
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Девопсы есть тут / ansible вопрос?

Post by Oleg-NY »

Идея была в том, что ansible все же сначала пробует ssh и потом только переключается на Paramiko, но судя по коду вам надо сменить платформу... ))
Самому Paramiko как SSH клиенту глубоко пофиг на ~/.ssh/config скорее всего. Найдите другой способ сообщить ему ваши параметры. Собственно это должен делать сам ansible, раз переключается на другой клиент.
Mr4k
Posts: 10
Joined: 15 Feb 2009 11:42

Re: Девопсы есть тут / ansible вопрос?

Post by Mr4k »

M. Ridcully wrote: 12 Jul 2017 17:44 Ну хорошо, а как с этим бороться-то? Задача - "bootstrap" хоста. Вот как сейчас происходит:
1. Создаю VM;
2. прописываю её имя в ~/.ssh/config;
3. вручную лезу на неё по паролю, добавляю свой ключ в authorized_keys, редактирую /etc/sudoers для беспарольного sudo, устанавливаю Питон;
4. тут уже ansible работает по-человечески.

Задача - автоматизировать пункт 3. По-идее, bash скрипт написать можно, наверное, но чего-то пока не понял, как его так написать, чтобы можно было из него отредактировать sudoers.
А где и как создается VM? Обычно принято на этапе создания делать inject ключей и минимальный bootstrap, необходимый для запуска config management tool.
StrangerR
Уже с Приветом
Posts: 38046
Joined: 14 Dec 2006 20:13
Location: USA

Re: Девопсы есть тут / ansible вопрос?

Post by StrangerR »

M. Ridcully wrote: 12 Jul 2017 19:58
Oleg-NY wrote: 12 Jul 2017 18:40 Так вы выяснили почему они переключаются на Paramiko?
Якобы, баг на OSX: https://github.com/ansible/ansible/blob ... xt.py#L632
Oleg-NY wrote: 12 Jul 2017 18:40 Если не можете запретить "keyboard-interactive" на сервере, то попробуйте сделать это на клиенте (KbdInteractiveAuthentication в вашем ~/.ssh/config). Может прокатит...
Я вас не понял. Мне как раз по паролю и нужно влезть, так как ключей там никаких ещё нету.
Проблема в том, что Paramiko даже имени их ~/.ssh/config не понимает.
А кто вам мешает ключ в образ VM-ки добавить? Я могу дать координаты человека который на этом собаку скушал, но я там проблем не заметил, он сразу ансиблем генерит VM-ку и без проблем к ней подцепляется (там вообще человек не учавствует). Другое дело, что мы потом эти имейджи клонируем, так как каждый имейдж с нуля ставить - мазохизм полный *если что, у меня под 2000 VM-ок в зоопарке, всех видов животных вплоть до FreeBSD и Win2000 /а нет, нет ни одной WIn 95 или Win NT, так что зоопарк не полный/
kostik78
Уже с Приветом
Posts: 3180
Joined: 17 May 2007 14:07

Re: Девопсы есть тут / ansible вопрос?

Post by kostik78 »

M. Ridcully wrote: 12 Jul 2017 19:58 Я вас не понял. Мне как раз по паролю и нужно влезть, так как ключей там никаких ещё нету.
Проблема в том, что Paramiko даже имени их ~/.ssh/config не понимает.
Как мы делаем. Есть базовый libvirt image (типа Centos 7 minimal) и стартап скрипт (initd-inject который как раз и положит нужный ключ из secure repository according to network env). И вообщем все, VM создается автоматически с самим же ансиблом с помошью virt-install... а далее запускается playbook которая соотвествует типу сервиса что VM будет обслуживать. Человек в этом процессе участвует только в самом начале когда определяет параметры хоста (имя, ip, vlan и virthost) ... и дает пинка ансиблу и все. Как ансибл закончит, он пришлет нотификацию что VM готова. Дай знать если нужно детальнее поговорить как это можно делать, созвонимся.

ЗЫ. У нас таким же образом Mesos cluster создает VM для OS которые с cgroups не дружат (Windows and FreeBSD)
hey_google
Posts: 11
Joined: 06 Jun 2017 21:35

Re: Девопсы есть тут / ansible вопрос?

Post by hey_google »

Добавьте опцию --connection=ssh, и будет вам по идее счастье. А, ну и оно попросит доставить sshpass, т.к. парамико умеет из коробки это, поэтому на него и переключается.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

kostik78 wrote: 15 Jul 2017 04:13 Как мы делаем. Есть базовый libvirt image
Что такое libvirt image? Или это просто iso файл дистрибутива?
Вообще почитал, вроде как раз то, что мне нужно. Спасибо за подсказку про initrd-inject! А то я тоже пришёл к выводу, что ключ лучше в момент установки сразу распространять, но думал, что придётся кастомные iso создавать.

А для virt-install в ansible какой-то свой модуль есть, или модуль command используете?
uncle_Pasha
Уже с Приветом
Posts: 19939
Joined: 30 Aug 2000 09:01
Location: WA

Re: Девопсы есть тут / ansible вопрос?

Post by uncle_Pasha »

Простите, я всегда спрашиваю, но никто толком и не ответил.
А кто такие эти девопсы?
Спасибо.
rorp
Уже с Приветом
Posts: 314
Joined: 24 May 2013 22:04

Re: Девопсы есть тут / ansible вопрос?

Post by rorp »

uncle_Pasha wrote: 23 Jul 2017 02:03 А кто такие эти девопсы?
Сисадмины-хипсторы.
kostik78
Уже с Приветом
Posts: 3180
Joined: 17 May 2007 14:07

Re: Девопсы есть тут / ansible вопрос?

Post by kostik78 »

rorp wrote: 23 Jul 2017 05:16
uncle_Pasha wrote: 23 Jul 2017 02:03 А кто такие эти девопсы?
Сисадмины-хипсторы.
Так было - сейчас это скорее программисты которые понимают инфраструктру и что можно и нужно автоматизировать. Времена хипстеров уже прошли.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12003
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Девопсы есть тут / ansible вопрос?

Post by M. Ridcully »

kostik78 wrote: 15 Jul 2017 04:13
M. Ridcully wrote: 12 Jul 2017 19:58 Я вас не понял. Мне как раз по паролю и нужно влезть, так как ключей там никаких ещё нету.
Проблема в том, что Paramiko даже имени их ~/.ssh/config не понимает.
Как мы делаем. Есть базовый libvirt image (типа Centos 7 minimal) и стартап скрипт (initd-inject который как раз и положит нужный ключ из secure repository according to network env). И вообщем все, VM создается автоматически с самим же ансиблом с помошью virt-install... а далее запускается playbook которая соотвествует типу сервиса что VM будет обслуживать. Человек в этом процессе участвует только в самом начале когда определяет параметры хоста (имя, ip, vlan и virthost) ... и дает пинка ансиблу и все. Как ансибл закончит, он пришлет нотификацию что VM готова. Дай знать если нужно детальнее поговорить как это можно делать, созвонимся.

ЗЫ. У нас таким же образом Mesos cluster создает VM для OS которые с cgroups не дружат (Windows and FreeBSD)
Отпишусь, вдруг кому пригодится, как проблему решил.

Оказалось, есть нечто, под названием cloud-init. Оно присутствует на официальных images Убунты, в названии чего-то-там-cloud.

Берётся это самый vanilla image, запускается через virt-install с опцией --import, и ему скармливается ISO с кастомизацией вроде SSH keys, hostname, etc.

Всё. Остальную автоматизацию можно уже непосредственно в VMке делать на башевских скриптах. Никаких Ансиблов, Питонов и т.д.

Return to “Работа и Карьера в IT”