...

вторник, 12 ноября 2013 г.

[Из песочницы] Внедрение корпоративного Linux в ПриватБанке

История




Внедрение 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 этапа:


  1. Загрузить Live (4 способа);

  2. Развернуть образ;

  3. Запустить privat-setup (мастер настройки, подключение к Puppet);

  4. Настроить периферию.




image

Меню загрузки
Инсталлятор (LIVE)



Идеология — не просто инсталлятор, а средство с широким функционалом: диагностика, восстановление информации, очистка винчестера и т.д, также в состав включены OpenSSH и x11vnc для возможности удалённого администрирования. Кроме того с помощью Live создается эталонный образ системы. Основой для создания послужил мануал из оф. ресурса. Был написан скрипт, который создает Live каждый раз с нуля, добавляет новые пакеты, копирует настройки и некоторые хаки.

image

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.

image

Подключение к puppet

II. Localserver




Localserver — ПК отделения, выполняющий роль сервера кеширования и сетевой загрузки. Это очень важный элемент общей системы. Без него мы бы перегружали все каналы трафиком обновлений и не могли бы загружать Live по сети. В большинстве случаев — это панели, которые показывают рекламу, но эту роль может выполнять абсолютно любой ПК, работающий круглосуточно.

Выполняет следующие функции:


  1. apt-cacher (в некоторых случаях экономится до 98% трафика);

  2. синхронизация установочного образа системы с эталоном (каждую ночь);

  3. сервер сетевой загрузки (tftp + nfs);

  4. сервер синхронизации обновлений внутрибанковского ПО.




Сделать ПК localserver-ом можно в любой момент с Puppet Manager, просто добавив ему такое свойство.

Как клиенты находят localserver? Для этого используется протокол avahi. На сервере запущен демон, который анонсирует в сети поддерживаемые им службы, а на клиенте — демон, который периодически “опрашивает” сеть на наличие служб. Результат записывается в /etc/hosts.

Также дополнительно был создан механизм defaultlocalserver — localserver в middle-office, который заменяет отсутствующий в подсети localserver.

image

Работа localserver

III. Управление




Puppet

Как уже было сказано, в качестве платформы управления выбран Puppet. Основные критерии — простота написания манифестов, большое сообщество, поддержка проекта такими компаниями, как Cisco, Google, Red Hat.

Клиенты подключаются к системе управления каждые 30 минут. Присылают факты, берут задания, после выполнения задания присылают отчёт.

Функции Puppet:


  • контроль паролей и конфигурационных файлов;

  • мониторинг актуальности критически важных пакетов;

  • инвентаризация ПК и периферийных устройств;

  • мониторинг загруженности ПК;

  • мониторинг ошибок в работе ПО и “железа”.




Puppet Manager

На момент внедрения, для Puppet существовало 2 фронтенда — foreman и puppet dashboard, но оба не могли в полной мере выполнять необходимые нам функции: первый — из-за ориентировки на сервера, у второго — не было LDAP авторизации. Было принято решение написать свой фронтенд, и оно оказалось очень правильным, поскольку это дало нам гибкость, недостижимую при использовании других вариантов.

Основные возможности Puppet Manager:


  • генерация конфигураций хостов;

  • анализ фактов и отчетов;

  • группировка ПК по территориальному и функциональному признаку;

  • разделение прав администраторов;

  • отображение аппаратно-программной конфигурации, подключенных периферийных устройств;

  • графическое отображение загруженности ПК (CPU, RAM);

  • фильтры

  • Event Manager (анализ отчётов и фактов с их последующей группировкой по уровням и типам).




image

Фильтр в Puppet Manager

Также хотелось бы отдельно отметить нашу последнюю разработку — Event Manager. Идея создания “позаимствована” у систем мониторинга. Главная задача Event Manager — дать системному администратору инструмент для контроля состояния удалённого ПК, узнавать о проблеме до того, как пользователь о ней сообщит. На основании отчётов, присылаемых устройствами, мы можем проанализировать состояние последних и распределить по степени критичности, а также генерировать какие-либо события на основании фактов.

image

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.

image

Схема работы Time-Shift

Итог




Если к вышеизложенному будет интерес — напишем цикл статей, в которых более детально будет описана реализация компонентов системы, организационные моменты, использование Windows-программ, замена TeamViewer, авторизация в ldap при использовании eap-ttls, оптимизация Puppet под большие нагрузки, правильная загрузочная флешка, работа драйверов для периферии, Wi-Fi и пр.

Руководитель группы разработки и поддержки корпоративной ОС — Коваль Богдан


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий