История
Внедрение Linux в ПриватБанке началось в 2007 году. За это время был пройден большой путь и хотелось бы поделиться с сообществом своим опытом внедрения. На данный момент мы достигли следующих показателей: более 36500 рабочих мест с ОС Linux в 4000 отделений, расположенных в 5 странах.
В 2007 году за основу был взят ASPLinux 11.2. Со временем для альтернативы были выбраны другие дистрибутивы — Fedora, openSUSE, Ubuntu. Позже стала очевидной необходимость создания собственного дистрибутива и системы управления рабочими станциями. Разработка началась в январе 2012 года. Для основы был выбран Ubuntu 12.04 LTS с рабочим окружением Gnome Classic (no effect). Основные аргументы: Ubuntu — самый распространённый десктопный дистрибутив последних лет; обширное комьюнити, где проще найти решение возникающих проблем; именно его в качестве основы внедрения выбрал Google, много примеров внедрения в государственных и муниципальных учреждениях Германии, Франции. Выбор системы управления остановился на Puppet.
В июне 2012 года стартовал переход и к январю 2013 на корпоративную ОС были переведены уже около 95% ПК. Такая скорость перехода обусловлена тем, что сотрудники уже имели опыт работы в Linux.
Основные задачи, которые удалось решить благодаря текущему внедрению:
- cущественная экономия ресурсов при поддержке ОС на рабочих местах сотрудников;
- поддержание программного обеспечения в актуальном состоянии;
- возможность оперативного применения критических обновлений (до 1 часа на всех ПК);
- cбор и анализ статистической информации о парке ПК и периферии;
- создание системы проактивной реакции на сбои (Event Manager).
Дальше более детальное описание компонентов нашей реализации.
I. Установка
Задачи:
- экономия времени;
- возможность удалённой установки ОС;
- альтернативные способы установки.
Для установки и настройки ОС нужно пройти 4 этапа:
- Загрузить Live (4 способа);
- Развернуть образ;
- Запустить privat-setup (мастер настройки, подключение к Puppet);
- Настроить периферию.
Меню загрузки
Инсталлятор (LIVE)
Идеология — не просто инсталлятор, а средство с широким функционалом: диагностика, восстановление информации, очистка винчестера и т.д, также в состав включены OpenSSH и x11vnc для возможности удалённого администрирования. Кроме того с помощью Live создается эталонный образ системы. Основой для создания послужил мануал из оф. ресурса. Был написан скрипт, который создает Live каждый раз с нуля, добавляет новые пакеты, копирует настройки и некоторые хаки.
LIVE — графический режим
Способы загрузки LIVE:
- по сети — основной способ, при его использовании загрузка происходит по dhcp+tftp+nfs с localserver-а (см. ниже);
- usb-flash — запуском скрипта создаем загрузочную флешку, используем isolinux + grub4dos;
- cd — дань истории, по аналогии usb-flash;
- hdd — загрузка из grub2 для обновления версии ОС — планируемое использование для перехода на 14.04.
Образ системы и его развёртывание
Наш “велосипед” — создан при помощи squashfstools с xz сжатием, благодаря чему его объём около 1ГБ. Основное преимущество такого метода заключается в том, что при синхронизации по сети докачивается только разница. При использовании образа, созданного clonezilla либо tar+xz — в процессе обновления образ практически перекачивался заново (больше 90%). Следует учесть, что в ПК должно быть не менее 800МБ ОЗУ (более старые — сейчас уже редкость), поскольку xz расходует много памяти при распаковке и, если памяти меньше, система будет свопиться, и процесс развёртывания значительно растягивается во времени (на 512МБ — около 40 минут).
Во время развёртывания образа выполняются следующие действия:
- очистка MBR;
- создание таблицы разделов;
- создание swap раздела;
- создание и форматирование root раздела;
- распаковка squashfs образа;
- создание и форматирование home раздела;
- установка grub + правка fstab.
В среднем, на типичном ПК (Intel Atom CPU D525 и выше, 2ГБ ОЗУ) процесс занимает около 5 минут.
Privat-setup
Фактически заменяет инсталлятор дистрибутива и сделан с использованием debconf. Запускается после развёртывания образа и позволяет настроить уникальные параметры: тип ПК, локализацию, имя хоста, подключает хост к Puppet.
Подключение к puppet
II. Localserver
Localserver — ПК отделения, выполняющий роль сервера кеширования и сетевой загрузки. Это очень важный элемент общей системы. Без него мы бы перегружали все каналы трафиком обновлений и не могли бы загружать Live по сети. В большинстве случаев — это панели, которые показывают рекламу, но эту роль может выполнять абсолютно любой ПК, работающий круглосуточно.
Выполняет следующие функции:
- apt-cacher (в некоторых случаях экономится до 98% трафика);
- синхронизация установочного образа системы с эталоном (каждую ночь);
- сервер сетевой загрузки (tftp + nfs);
- сервер синхронизации обновлений внутрибанковского ПО.
Сделать ПК localserver-ом можно в любой момент с Puppet Manager, просто добавив ему такое свойство.
Как клиенты находят localserver? Для этого используется протокол avahi. На сервере запущен демон, который анонсирует в сети поддерживаемые им службы, а на клиенте — демон, который периодически “опрашивает” сеть на наличие служб. Результат записывается в /etc/hosts.
Также дополнительно был создан механизм defaultlocalserver — localserver в middle-office, который заменяет отсутствующий в подсети localserver.
Работа localserver
III. Управление
Puppet
Как уже было сказано, в качестве платформы управления выбран Puppet. Основные критерии — простота написания манифестов, большое сообщество, поддержка проекта такими компаниями, как Cisco, Google, Red Hat.
Клиенты подключаются к системе управления каждые 30 минут. Присылают факты, берут задания, после выполнения задания присылают отчёт.
Функции Puppet:
- контроль паролей и конфигурационных файлов;
- мониторинг актуальности критически важных пакетов;
- инвентаризация ПК и периферийных устройств;
- мониторинг загруженности ПК;
- мониторинг ошибок в работе ПО и “железа”.
Puppet Manager
На момент внедрения, для Puppet существовало 2 фронтенда — foreman и puppet dashboard, но оба не могли в полной мере выполнять необходимые нам функции: первый — из-за ориентировки на сервера, у второго — не было LDAP авторизации. Было принято решение написать свой фронтенд, и оно оказалось очень правильным, поскольку это дало нам гибкость, недостижимую при использовании других вариантов.
Основные возможности Puppet Manager:
- генерация конфигураций хостов;
- анализ фактов и отчетов;
- группировка ПК по территориальному и функциональному признаку;
- разделение прав администраторов;
- отображение аппаратно-программной конфигурации, подключенных периферийных устройств;
- графическое отображение загруженности ПК (CPU, RAM);
- фильтры
- Event Manager (анализ отчётов и фактов с их последующей группировкой по уровням и типам).
Фильтр в Puppet Manager
Также хотелось бы отдельно отметить нашу последнюю разработку — Event Manager. Идея создания “позаимствована” у систем мониторинга. Главная задача Event Manager — дать системному администратору инструмент для контроля состояния удалённого ПК, узнавать о проблеме до того, как пользователь о ней сообщит. На основании отчётов, присылаемых устройствами, мы можем проанализировать состояние последних и распределить по степени критичности, а также генерировать какие-либо события на основании фактов.
Event Manager
IV. Репозиторий + Time-Shift
В корпоративной сети создано зеркало репозитория Ubuntu. Также создан свой репозиторий (100 пакетов) для внутреннего и отсутствующего в официальных репозиториях софта.
Категории:
- Настройки системы и профиля пользователя;
- Внутреннее специализированное ПО;
- Прикладное ПО — софт для POS терминалов;
- Драйвера для Wi-Fi, веб-камер, МФУ;
- ПО, не входящее в официальный репозиторий – Chrome.
Необходимость в создании нижеописанного появилась спустя 3 месяца использования корпоративной ОС. Вышло очередное обновление ядра (3.2.0-28) и на ПК с видеокартами ATI, после “засыпания” не включался монитор и т.д. Решением для исключения подобных ситуаций было создание Time-Shift.
Time-Shift — дополнительная “заморозка” репозитория на 2 недели (аналог системы заморозки в linux mint debian edition).
Фактически теперь у нас существует 3 репозитория:
- current — текущие ubuntu;
- testing — тестирование обновлений в течение 2-ух недель на 1% ПК;
- stable — стабильная версия для остальных 99%.
За время использования Time-Shift удалось несколько раз закрепить версии пакетов. Например, было обновление ядра (3.2.0-38), в котором “отваливалось” видео на Intel Sandy Bridge.
Схема работы Time-Shift
Итог
Если к вышеизложенному будет интерес — напишем цикл статей, в которых более детально будет описана реализация компонентов системы, организационные моменты, использование Windows-программ, замена TeamViewer, авторизация в ldap при использовании eap-ttls, оптимизация Puppet под большие нагрузки, правильная загрузочная флешка, работа драйверов для периферии, Wi-Fi и пр.
Руководитель группы разработки и поддержки корпоративной ОС — Коваль Богдан
Автор: bodyakov