Показаны сообщения с ярлыком удаленное управление. Показать все сообщения
Показаны сообщения с ярлыком удаленное управление. Показать все сообщения

понедельник, 24 февраля 2014 г.

Внедряем Ansible.

Ansible - простая в использовании система управления конфигурациями серверов. Я тестировал pupet и chef, но в моих условиях (управление рабочими станциями) их использование превращалось в ад. Некоторое время назад искал систему с работой через ssh, но нашел только какую-то монструозную немецкую поделку, полностью на php и с интерфейсом из детсада. К тому же с нетривиальной установкой и настройкой. И вот недавно попалась статья на Хабре http://habrahabr.ru/post/211306/
Проникшись, я снес так и незаработавший паппет и установил героя - Ansible.
Как обычно я не буду тщательно расписывать установку и настройку, в сети уже полно манов на русском, да и официальная документация подробнейшая, правда уже на английском.
Остановлюсь на граблях, с которыми столкнулся:
1) Работа с шеллом удаленной системы.
Возможно я не очень хорошо знаю apt или yum, но если у вас имеются какие-то вопросы с установленным ПО, вы долго будете соображать - почему не фурычит Ansible? В частности, у меня в убунте был добавлен ППА wine, но не был скопирован сертификат репозитория. Соответсвенно, несмотря на ключ -y в apt все равно выскакивал запрос на обновление пакетов из этого репозитория. Ansible при этом просто ждет окончания установки до бесконечности. Аналогичная проблемам была с каким-то запросом насчет установки нового grub.
Так что если Ansible долго не возвращает ответ - идите на клиентскую систему.

2) Список хостов.
В документации черным побелому написано:
Edit (or create) /etc/ansible/hosts and put one or more remote systems in it, for which you have your SSH key in authorized_keys:
Это означает, что прежде чем приступать к управлению через Ansible, нужно каким-то образом получить запись о клиенте в файл authorized_keys. Я просто логинился к лиенту по ssh руками.
Может кто подскажет, каким образом создать эти записи обо всех хостах в сети автоматически?

3) Авторизация на хостах происходит либо по rsa ключу (долго и муторно рассылаем его по клиентам), либо с запросом пароля (раскоментировать опцию ask_pass      = True
 в файле /etc/ansible/ansible.cfg, если вы работаете под рутом) или прописать в инвентарном файле опции подключения (192.168.0.36 ansible_ssh_user=root ansible_ssh_pass=пароль_рута в файле /etc/ansible/hosts, например).

Пока все. Если найду что-нибудь интересненькое - сообщу в комментах либо отдельным постом.
А вообще Ansible просто чудо! Я в нее влюбился, особенно после puppet.

среда, 27 февраля 2013 г.

X11vnc - аналог Radmin для linux.

Когда работаешь в техподдежрке в компании со штатом более ста человек, очень быстро отвыкаешь от индивидуального подхода (в прямом смысле 8)) к каждому пользователю. Основными рабочими инструментами становятся Radmin, vnc и службы удаленного рабочего стола windows.
Именно после такой работы я начал плотно заниматься переводом пользователей на linux, и первым делом встал вопрос о системах удаленного управления рабочим столом в этой операционной системе.
Я не буду рассказывать о том, каким тернистым путем я шел, ведя борьбу с различными программами на счет автозапуска, подключения к текущей сессии пользователя и тд и тп.
Расскажу только о конечном результате.
Сейчас я использую x11vnc. Основным дистрибутивом является openSUSE 12.1. Сначала устанавливаем сервер:

zypper in x11vnc

После установки можно настроить сервер из графической оболочки, но мне это сделать не удалось.


Поиски в гугле и чтение манов дали ответ:

x11vnc -display :0 -shared -forever -auth guess&

Так выглядит строка запуска сервера vnc для того, чтобы подключаться  к запущенному графическому серверу. Особо отмечу параметры запуска : -auth guess разрешает подключение без какой-либо аутентификации, то есть не требуется ни подтверждение пользователя, ни указание пароля, любой может получить полный доступ к сессии пользователя просто обратившись к компьютеру по IP адресу или имени используя vnc.
В моей компании подобная ситуация допустима и искать более подходящие параметры я не стал. Добавил команду в автозагрузку создав скрипт /etc/init.d/x11vnc

 #!/bin/bash
x11vnc -display :0 -shared -forever -auth guess&


сделал его исполняемым (chmod +x /etc/init.d/x11vnc) и добавив в запуск на 5 уровне исполнения (ln -s /etc/init.d/x11vnc /etc/init.d/rc5.d/S12x11vnc).
Все прекрасно работает, казалось бы можно просто работать, но...
В наличии имеется довольно много старых компьютеров, которые openSUSE с KDE просто не вывезут. На них я обычно устанавливаю XFCE, хотя в последнее время стал склоняться к использованию Xubuntu 12.04. С XFCE используется диспетчер lightwm.
Так вот, при выполнении указанной выше команды получаем следующую картину:

27/02/2013 17:38:53 x11vnc version: 0.9.12 lastmod: 2010-09-09  pid: 2149
xauth:  file /root/.Xauthority does not exist
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
/tmp/fd.0RDwcb: 305: [: -a: unexpected operator
27/02/2013 17:38:53 -auth guess: failed for display=':0'
27/02/2013 17:38:53 -auth guess: since we are root, retrying with FD_XDM=1
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
/tmp/fd.7U6gp4: 305: [: -a: unexpected operator
27/02/2013 17:38:54 -auth guess: failed for display=':0'


Вывод ошибок и Гугл многое говорят о возможности исправления ошибок, но я выбрал наиболее простой, как мне кажется, способ.

x11vnc -storepasswd /home/.vncpasswd
Enter VNC password:


Создаем файл с шифрованным паролем для доступа. Затем меняем наш скрипт /etc/init.d/x11vnc:

#!/bin/bash
x11vnc -dontdisconnect -display :0 -auth /var/run/lightdm/root/:0 -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/.vncpasswd


Дальше добавляем его в автозапуск как описано выше. Параметр -rfbauth /home/.vncpasswd указывает серверу x11vnc использовать созданный ранее файл с паролем. Указание запущенного экземпляра дисплейного менеджера -auth /var/run/lightdm/root/:0 необходимо, без него сервер x11vnc в XFCE просто не стартует. Остальные опции желательны, так как при работе без их указания наблюдаются многочисленные проблемы - не срабатывает запуск, сервер отваливается после отключения клиента, и др.
Все действия описаны для openSUSE, отличие от Xubuntu только в добавлении скрипта в автозагрузку. Там это делается командой update-rc.d x11vnc defaults 99 после создания файла x11vnc в директории /etc/init.d/.
После всех процедур получаем компьютер, к которому в любой момент можно подключиться по vnc и оказать помощь пользователю.