УДК 004.4

Автоматизация процесса конфигурирования узлов разного типа и назначения в составе единой вычислительной инфраструктуры

Воронцов Юрий Алексеевич – аспирант, ассистент кафедры Математического обеспечения и стандартизации информационных технологий МИРЭА – Российского технологического университета.

Михайлова Евгения Константиновна – аспирант, ассистент кафедры Математического обеспечения и стандартизации информационных технологий МИРЭА – Российского технологического университета.

Синицын Иван Васильевич – кандидат технических наук, доцент кафедры Математического обеспечения и стандартизации информационных технологий МИРЭА – Российского технологического университета.

Аннотация: В работе рассматриваются подходы к автоматизации процесса конфигурации вычислительных узлов разных типов. Первоначально определяются типы конфигурируемых узлов и конфигурационные задачи, необходимые для каждого типа. После это рассматриваются два подхода к автоматизации рассмотренных задач, в том числе подход с применением систем управления конфигурациями, который является предпочтительным. Описываются системы управления конфигурации, которые могут быть применены для данного подхода, а также рассматриваются преимущества, которые приносит его использование.

Ключевые слова: конфигурационное управление, вычислительная инфраструктура, автоматизированное конфигурирование узлов, контроллер домена, Ansible.

Введение

В настоящее время типичная инфраструктура организации или предприятия включает в себя узлы с разного типа и назначения. Существуют узлы, входящие в состав автоматизированных рабочих мест сотрудников, и предназначенные для выполнения стандартных пользовательских задач с применением настольных операционных систем. Помимо этого, в инфраструктуре присутствуют серверные узлы, предназначенные для хостинга приложений, автоматизирующих различные процессы внутри организации. Со временем количество узлов в инфраструктуре может увеличиваться, а решаемые на вычислительных машинах задачи могут меняться, что влечет за собой изменение состава программного обеспечения (ПО) на них, а также ряда их параметров функционирования. При наличии небольшого парка вычислительных машин задачи администрирования могут быть решены в ручном режиме для каждой машины, однако при его расширении до сотен, процесс конфигурирования становится достаточно затруднительным, и возникает необходимость в автоматизации данного процесса.

Задачи конфигурирования инфраструктуры

Полная оценка сложности конфигурационного процесса возможно только при определении всех выполняемых задач конфигурирования. Следовательно, необходимо определить набор задач для каждого из типов узлов, которые могут быть включены в состав типичной инфраструктуры.

Основу любой инфраструктуры представляют серверные машины, используемые для развертывания серверной части клиент-серверного программного обеспечения, СУБД для хранения данных этого ПО, а также внутренних сервисов, таких как, почтовые сервера, разделяемые файловые хранилища и т.д. Задачи конфигурирования такого типа узлов заключаются в:

  1. Создании среды развертывания сервисов и приложений в изолированных окружениях – настройка среды виртуализации операционных систем или контейнеризации приложений;
  2. Создание и конфигурирование изолированных окружений согласно предъявляемым к ним требованиям – создание отдельных виртуальных машин и их настройка;
  3. Развертывание сервисов и приложений в изолированных окружениях – развертывание серверных приложений на созданных виртуальных машинах или развертывание контейнеризированных приложений в выбранной среде контейнеризации.

Помимо серверных машин присутствуют узлы в составе автоматизированных рабочих мест пользователей. Набор задач конфигурации для узлов этого типа включает в себя следующие:

  1. Управление доступом пользователей к узлу – создание записей пользователей и настройка прав;
  2. Организация доступа к разделяемым ресурсам и сервисам – подключение файловых серверов, серверов печати и т.д.;
  3. Установка программного обеспечения для выполнения требуемых пользовательских задач, при этом разные узлы могут иметь свой перечень необходимого ПО.

Как можно видеть, настройка разных типов узлов имеет разный набор задач и требует разного подхода. Помимо этого, ещё одним немаловажным фактором является отличие в контроле над состоянием узлов разных типов.

Состояние серверных узлов всегда известно наверняка и может быть проконтролировано, персональные узлы находятся под управлением своих пользователей. В каждый конкретный момент времени нельзя утверждать со стопроцентной вероятностью, что узел такого типа находится в необходимом состоянии для изменения конфигурации.

Также сложность конфигурирования инфраструктуры напрямую зависит от количества узлов в этой инфраструктуре. Рассмотрим несколько способов автоматизации конфигурирования инфраструктуры, позволяющих снизить сложность данного процесса.

Решение на основе скриптов и контроллера домена

Данное решение предполагает использование скриптовых файлов для конфигурирования серверных машин и сервера контроллера домена с набором групповых политик для настройки узлов АРМ. Скриптовые файлы представляют из себя наборы команд для установки и настройки программного обеспечения. Однако, такой способ не обеспечивает должной информативности о состоянии серверных машин и программного обеспечения на них и не позволяет гибко изменять их конфигурацию на основе текущего состояния.

Контроллер домена является достаточно удобным способом для управления конфигурацией персональных машин с точки зрения управления пользовательскими политики по управлению доступом к машине, доступом к разделяемым сетевым ресурсам, а также правами пользователей. Понятие контроллера домена впервые ввела компания Microsoft для сетей под управлением серверов с ОС семейства Windows NT, решение носит название Windows Active Directory. Чаще всего задачи контроллера домена выполняет отдельное устройство с установленным на нем специализированным ПО — например, компьютер под управлением серверной операционной системы Windows, которая обладает соответствующей функциональностью.

В других операционных системах функции контроллера домена могут выполнять отдельные программные решения, например Samba и Red Hat FreeIPA [3].

Однако, задачу установки программного обеспечения с применением данной технологии выполнить в полной мере невозможно. Для операционных систем семейства Windows NT предлагается вариант установки msi образов, однако далеко не всё программное обеспечение имеет подобный формат выпуска, поэтому далеко не всё ПО может быть установлено подобным образом. Для Unix-подобных операционных систем, в том числе дистрибутивов на базе ядра Linux, установка ПО подобным образом невозможна, однако машины под управлением данных ОС также активно используются в современных инфраструктурах. В результате, решение всех поставленных задач является невозможным.

Решение с применением систем управления конфигурацией

Более комплексное и безопасное решение предполагает использование технологий управления конфигурациями, которые на текущий момент активно применяются для управления настройками вычислительных машин.

Инструменты управления конфигурациями влекут за собой переход к новому подходу работы с конфигурацией, именуемый Infrastructure as Code или инфраструктура как код (IaC). Данный подход предполагает реализацию процесса настройки узлов в сети через набор заготовленных файлов конфигурации, написанных на языке разметки, используемом выбранной системой управления конфигурации. В отличии от стандартного подхода с запуском скриптов и команд, а также ручного изменения конфигурационных файлов на управляемых машинах и приведения их к желаемому состоянию, подход «инфраструктура как код» прибегает к декларативному подходу и описанию желаемого состояния. IaC позволяет рассматривать конфигурацию инфраструктуры как типичную кодовую базу, что в свою очередь дает возможность использовать инструменты контроля версий. Данный подход упрощает возврат к различным версиям конфигураций в случае возникновения ошибок при внесении изменений [4].

Наиболее популярной системой управления конфигурациями является система Ansible. Ansible — это приложение командной строки для автоматизации ИТ с открытым исходным кодом, написанное на Python. Он может настраивать системы, развертывать программное обеспечение и организовывать рабочие процессы для поддержки развертывания приложений, обновлений системы и многого другого [5].

Основными преимуществами Ansible являются простота и удобство использования. Он также уделяет большое внимание безопасности и надежности. В качестве протокола передачи данных используется OpenSSH, а для описания конфигурации используется простой язык на основе разметки YAML, разработанный для быстрого начала работы без длительного обучения [5].

Система Ansible использует PUSH-модель распространения конфигурации (рис. 1) без клиента. Приведение узла к новой конфигурации осуществляется при помощи Python-модулей и интерпретатора Python на управляемой машине. При отправке команды об установке новой конфигурации Ansible пересылает все необходимые для настройки модули Python на управляемую машину, где их исполняет интерпретатор Python, а результаты исполнения отправляются обратно на управляющую машину.

1

Рисунок 1. Схема работы PUSH-модели управления.

Несмотря на популярность Ansible, из-за PUSH модели распространения конфигурации, использовать его в полной мере можно для конфигурации только тех узлов, которые находятся только в известном и прогнозируемом состоянии. Следовательно, данная система больше всего подходит для настройки серверов, а для настройки узлов АРМ такая модель распространения не подходит из-за невозможности контроля их состояния. В результате этого могут возникать проблемы с узлами, недоступными для подключения в момент распространения конфигурации с управляющего узла. Что в свою очередь приведет к ошибкам при работе пользователей неверно настроенных АРМ узлов (рис. 2).

2

Рисунок 2. Невозможность применения конфигурации.

Решением этой проблемы может стать использование другой системы управления конфигурациями – SaltStack. Данная система поддерживает не только PUSH, но и PULL модель распространения конфигурации. PULL модель (рис. 3) позволяет управляемой машине самостоятельно инициировать процесс применения конфигурации, путем отправки запросов на управляющую машину о текущем состоянии конфигурации. Таким образом даже неактивные в момент применения новой конфигурации узлы, смогут самостоятельно запросить её позднее при активации и подключении к сети. Такая модель уже невозможна без клиентской составляющей системы.

3

Рисунок 3. Схема работы PULL-модели.

Именно поэтому система SaltStack состоит из двух компонентов – Salt Minion и Salt Master. Minion является клиентской частью и устанавливается на управляемые машины, а Master устанавливается на управляющую машину, на которой также хранится текущая конфигурация [6].

Конфигурационные файлы SaltStack используют тот же стек технологий, что и Ansible, а именно язык программирования Python, язык разметки YAML, шаблонизатор Jinja2 и т.д. Это позволяет использовать данную систему вместо ранее рассмотренного Ansible, или же совместно с ним, для достижения наибольшей эффективности автоматизации конфигурирования инфраструктуры.

Ещё одним преимуществом SaltStack является возможность настройки клиентских узлов под управлением ОС различных семейств. Помимо широкого спектра поддерживаемых дистрибутивов [7] система имеет отдельные модули для управления установкой программного обеспечения:

  • salt.states.pkg – модуль для управления установкой программного обеспечения под операционные системы на основе ядра Linux;
  • states.macpackage – модуль для установки программного обеспечения в виде dmg пакетов под MacOS;
  • salt.modules.win_pkg – модуль для конфигурации модуля pkg на работу с ПО для ОС семейства Windows.

Всё это делает SaltStack подходящим для настройки узлов в составе АРМ.

Задачи настройки серверных машин и установки программного обеспечения на машины в составе АРМ могут быть полностью решены с помощью систем управления конфигурациями. Задачи же управления доступом пользователей к машинам в составе АРМ и управление подключением этих машин к разделяемым системным ресурсам успешно могут быть решены при помощи сервера контроллера домена. Для определения наиболее оптимального программного решения необходимо сравнить между собой наиболее популярные решения: Windows Active Directory, Samba DC и FreeIPA (табл. 1).

Таблица 1. Сравнение параметров доменных контроллеров.

Решение

Параметр

Windows AD

Samba DC

FreeIPA

Поддержка клиентов Linux

Да

Да

Да

Поддержка клиентов Windows

Да

Да

Частичная

Поддержка клиентов MacOS

Да

Да

Частичная

Платформа для сервера

Windows Server

Дистрибутивы на базе Linux

Дистрибутивы на базе Linux

Модель распространения

Предоставляется вместе с лицензией Windows Server

Open Source

Open Source

На основании рассмотренных достоинств и недостатков можно сделать вывод, что для инфраструктуры, в которой присутствуют персональные машины под управлением операционных систем различных семейств лучше всего подойдет Samba AD DC, так как она имеет наиболее полную поддержку самых популярных семейств ОС: Windows, Linux, MacOS [8]. В свою очередь для ОС на базе ядра Linux наиболее подходящим является FreeIPA, поскольку данная технология была изначально разработана для использования с Linux-клиентами и обеспечивает для них наиболее полную поддержку [9]. Немаловажным фактором является и то, что доработанный вариант сервера FreeIPA включен в состав отечественного дистрибутива Astra Linux [10].

Таким образом наиболее удобным подходом к реализации процесса конфигурации можно считать совместное использование системы Ansible для настройки серверных машин, системы SaltStack для конфигурации ПО на персональных машинах, и контроллер домена Samba AD DC или FreeIPA для управления пользовательскими политиками.

Заключение

Процесс конфигурации инфраструктурных узлов включает в себя большое количество задач, требующих комплексного решения и централизованного управления. При этом важным является и тот факт, что с течением времени набор конфигурационных параметров может изменяться, а также может меняться набор программного обеспечения, используемого для решения задач на узлах инфраструктуры. Всё это требует постоянного контроля за наборами конфигурационных файлов, установленного программного обеспечения, а также пользовательских политик. При этом при отсутствии централизованного хранилища сложность контроля за множеством узлов растет пропорционально количеству машин.

Использование систем конфигурационного управления в совокупности с контроллером домена в свою очередь позволяет автоматизировать процесс конфигурирования узлов разного типа, а также позволят централизовать хранение конфигураций. Таким образом упрощается процесс изменения параметров функционирования узлов, а также снижаются временные затраты на внесение изменений. Однако добиться этого можно только при помощи нескольких систем управления конфигурациями, для реализации как PUSH, так и PULL моделей распространения конфигураций.

Список литературы

  1. Иванова Наталья Александровна, Кубанских Олеся Владимировна Создание корпоративной почтовой системы с использованием системы управления конфигурациями // Прикаспийский журнал: управление и высокие технологии. 2022. №1 (57). URL: https://cyberleninka.ru/article/n/sozdanie-korporativnoy-pochtovoy-sistemy-s-ispolzovaniem-sistemy-upravleniya-konfiguratsiyami (дата обращения: 03.06.2023).
  2. Воронцов Ю.А., Михайлова Е.К. Комбинированная архитектура системы конфигурационного управления вычислительной инфраструктурой // International Journal of Open Information Technologies. 2021. №11. URL: https://cyberleninka.ru/article/n/kombinirovannaya-arhitektura-sistemy-konfiguratsionnogo-upravleniya-vychislitelnoy-infrastrukturoy (дата обращения: 02.06.2023).
  3. Контроллер домена (Domain Controller) [Электронный ресурс] // Энциклопедия Касперского. URL: https://encyclopedia.kaspersky.ru/glossary/domain-controller/ (дата обращения: 04.06.2023).
  4. Morris, Kief. Infrastructure as Code / Morris Kief. – 2nd ed. – Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472, 2021. – 430 p.
  5. How Ansible works [Электронный ресурс] // Red Hat Ansible Overview. URL: https://www.ansible.com/overview/how-ansible-works (дата обращения: 05.06.2023).
  6. Saltsystemarchitecture[Электронный ресурс] // Документация системы SaltStack. URL: https://docs.saltproject.io/en/latest/topics/salt_system_architecture.html (дата обращения: 05.06.2023).
  7. Saltsupportedoperatingsystems [Электронный ресурс] // Документация системы SaltStack. URL: https://docs.saltproject.io/salt/install-guide/en/latest/topics/salt-supported-operating-systems.html (дата обращения: 05.06.2023).
  8. Документация на программный продукт Samba [Электронный ресурс] // Основная страница документации. URL: https://wiki.samba.org/index.php/User_Documentation (дата обращения: 06.06.2023).
  9. Документация на программный продукт FreeIPA [Электронный ресурс] // Основная страница документации. URL: https://www.freeipa.org/page/Documentation (дата обращения: 06.06.2023).
  10. FreeIPA [Электронный ресурс] // ALT Linux Wiki. URL: https://www.altlinux.org/FreeIPA (дата обращения: 06.06.2023).

Интересная статья? Поделись ей с другими: