Конфигурация системы
Конфигура́ция систе́мы (англ. system configuration, SC)[1] в системной инженерии — компьютеры, процессы и устройства, которые составляют систему и её границы. Более обобщённо, конфигурация системы представляет собой конкретное определение элементов, которые задают и/или предписывают состав системы.
Альтернативно, термин «конфигурация системы» может относиться к модели (декларативной) для абстрактных обобщённых систем. В этом смысле использование информации о конфигурации не связано с каким-либо конкретным применением, а существует как самостоятельный набор данных. Правильно сконфигурированная система позволяет избежать проблем конфликта ресурсов и облегчает установку нового оборудования в процессе модернизации.
Пример конфигурации
Ниже приведён базовый пример конфигурации системы (SC) в формате XML.
Описание: Данный пример описывает один «сайт» (MyHouse) и указывает, что имеется один хост с компонентами user-setup и mysql-db. На хосте должна быть учётная запись пользователя с именем mysql с соответствующими параметрами. Обратите внимание, что схема конфигурации не требует тегов XML, специфичных для Windows или UNIX. Она просто представляет данные как самостоятельную информацию, не определяя способы использования этих данных.
Такой подход является признаком качественной модели конфигурации системы.
Дальнейшие расширения
Показанная выше модель может быть расширена. Например, пользователь может иметь дополнительные атрибуты, такие как «предпочтения» и «пароль». Компоненты могут зависеть от других компонентов. Могут быть определены свойства, передаваемые во вложенные элементы. Вариантов расширения может быть множество, поэтому их необходимо тщательно контролировать и обдуманно реализовывать, чтобы не разрушить концепцию конфигурации системы.
Использование
Практическое использование модели можно разделить на несколько категорий: документирование, развёртывание и эксплуатация.
Одно из применений конфигурации — простое документирование того, чем является система. Такое описание может стать весьма объёмным, что усложняет модель данных. Важно различать конфигурационные и описательные данные. Хотя комментарии возможны на любом уровне (и поддерживаются большинством инструментов), чрезмерное увеличение объёма данных снижает их полезность. Например, конфигурация системы не предназначена для фиксации истории изменений или описания замысла и назначения различных элементов. Конфигурационные данные должны отражать лишь текущее состояние или желаемую настройку системы.
Развёртывание связано с интерпретацией набора конфигурационных данных и выполнением действий для настройки системы в соответствии с ними. Это может быть даже простая проверка наличия нужных элементов, удостоверяющая актуальность конфигурации.
Примеры включают запуск библиотеки на Perl с командной строки для чтения конфигурации и запуска процессов на локальных или удалённых хостах для установки компонентов. Также, пока система функционирует, может быть запущена служба SystemConfiguration, предоставляющая интерфейс (например, интерфейсы CORBA IDL) для доступа других приложений системы к данным конфигурации и выполнения аналогичных действий по развёртыванию.
В процессе эксплуатации системы определённые службы могут использовать данные конфигурации. Например, служба безопасности может получать из конфигурации хеши паролей MD5 для учётных записей пользователей, которым разрешён удалённый вход на хосты. Сервис мониторинга системы (см. мониторинг системы) может использовать эти данные для определения, «что и как мониторить» в составе системы. PresentationManager может применять конфигурационные сведения для доступа к пунктам меню и видам отображения, ориентируясь на права доступа пользователей.
<system_configuration>
<site name="MyHouse" >
<hosts>
<host_ref name="host1"/>
</hosts>
</site>
<group name="mysql" gid="500"/>
<user name="mysql" uid="500">
<groups>
<group_ref name="mysql"/>
</groups>
</user>
<host name="host1" >
<users>
<user_ref name="mysql">
</users>
<profiles>
<profile_ref name="workstation"/>
</profiles>
</host>
<profile name="workstation" >
<components>
<component_ref name="user-setup" >
<component_ref name="mysql-db" >
</components>
</profile>
<component name="user-setup">
</component>
<component name="mysql-db">
</component>
</system_configuration>