12 November 2013

Внедрение корпоративного Linux в ПриватБанке

Configuring Linux*nixPuppet
Sandbox

История


Внедрение 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 и пр.
Руководитель группы разработки и поддержки корпоративной ОС — Коваль Богдан
Tags:LinuxUbuntuПриватБанкpuppet
Hubs: Configuring Linux *nix Puppet
+226
107.9k 466
Comments 169
Top of the last 24 hours