Язык отображения:   ru  en

Это старая версия документа!


Сервисы

Сервисы

Сервисы это службы, управляющие обновлением конфигурации сервера. К каждому сервису принадлежит определенный набор файлов конфигурации (filegens), которые будут обновлены на выделенном сервере при изменении соответствующих пунктов в панели. Сервисы могут быть трех состояний:
Synced - данные в панели соответствуют конфигурации сервера;
Pending rebuild - были произведены изменения в панели и ожидается обновление конфигураци;
Rebuild blocked - при обновлении произошла ошибка, автоматическое обновление блокировано. Ошибка будет показываться в графе Error
Обновление конфигурации сервера происходит не моментально! Сразу после изменений в панели сервис должен находится в состоянии Pending rebuild. В течение минуты-двух он перейдет в состояние Synced, это означает, что необходимые изменений произведены на сервере.
Также в меню actions можно видеть раздел filegens. Filegens это темплейты всех файлов, которые заливаются на сервер.

Filegens

Filegens (генераторы) представляют из себя простой способ генерации любых конфигов прямо из базы, без написания лишнего кода. Для этого используется специально подготовленный perl-hash, называемый datasource. Его структура аналогична структуре базы.
Рассмотрим самый простой пример, генерация конфига vhosts.conf для веб-сервера apache.
Для этого мы используем datasource hosts_accounts, в котором содержиться вся необходимая информация.
Идем в base/filegens/add

Name - это имя filegen. При перестройке сервисов порядок вызова генератора определяется им.
Datasource - подходящий datasource. В нашем случае hosts_accounts.
Service - к какому сервису будет привязан данный генератор, то есть при ребилде какого сервиса он будет активироваться и заливать свой генерированный файл.
Filename - имя файла, куда будет сохраняться результат работы генератора. Если тип генератора скрипт и Filename не заполнено, используется временный файл, который потом удаляется
Start mark - если файл необходимо встраивать внутрь другого, то это отметка начала генерированной секции. Необходимо оставлять это поле пустым, если нужно заменять файл.
End mark - аналогично Start mark. Не используется, если Start mark не определен.
File permissions - 4-х значный номер, обозначающий права на файл. Если не указан, используются права существующего на dedicated файла.
Template - сам темплейт конфига. Подробнее о структуре ниже.

Итак, пример построения apache_vhosts.conf:

<TMPL_LOOP accounts_loop>
# HERE we loop over accounts
# sites of account <TMPL_VAR login>
<TMPL_LOOP hosts_loop> # embedded loop of bound to account hosts
<VirtualHost *:80>
  ServerName <TMPL_VAR name>
  ServerAlias <TMPL_LOOP aliases_loop><TMPL_VAR alias> </TMPL_LOOP> # one more embedded loop

# здесь используется backreferences и переменные из настроек
  DocumentRoot <TMPL_VAR GLOBAL_clients_home>/<TMPL_VAR accounts_loop.login>/domains/<TMPL_VAR name>/html 

</VirtualHost>

</TMPL_LOOP> # closing hosts_loop
</TMPL_LOOP> # closing accounts_loop

Начинаем разбирать наш пример.
Первым делом желательно прочитать документацию по HTML::Template, template-engine, использующуюся при построении файлов. Достаточно понимать значение TMPL_LOOP, TMPL_VAR. Документация расположена по адресу http://html-template.sourceforge.net/.
Каждый цикл индицируется названием LOOPNAME_loop и имеет ключ, к которому в темплейте можно обращаться как main_key. Например,

<TMPL_LOOP accounts_loop>
Account <TMPL_VAR login> have ID <TMPL_VAR main_key>
</TMPL_LOOP>

У каждого цикла есть параметры, в accounts_loop есть login, passwd и т.п.
Параметром может быть цикл, тогда он содержит поддерево данных, типа {accounts_loop}{$account_id}{hosts_loop}{$host_id}{name}.
В примере с apache_vhosts.conf это видно на hosts_loop и aliases_loop.
Особый пример представляет строка DocumentRoot, в которой используется сразу два приема, backreference и доступ к переменным из настроек.
backreference - это переменная, НЕ ЛЕЖАЩАЯ в текущей вложенности цикла. Как пример, мы приводим accounts_loop.login, который в hosts_loop не виден, так как хранится в accounts_loop (внешнем цикле).
GLOBAL - способ обратиться к переменным в configure. Убирается из имени GLOBAL_ и вытаскивается переменная.

Деление темплейта на куски.

Иногда необходимо сделать группу конфигурационных файлов. Как пример можно привести файлы зон named или виртуальных хостов apache. Самый простой способ деления - вставлять в темплейт метки начала деления DK_NEW_FILE. Пример: создаем файлы вирутальных хостов apache, по файлу на виртхост:

DK_NEW_FILE /usr/local/apache/conf.d/

  ServerName <TMPL_VAR name>
  ServerAlias <TMPL_LOOP aliases_loop><TMPL_VAR alias> </TMPL_LOOP> # one more embedded loop

DocumentRoot <TMPL_VAR domain_htdocs_dir> # domain_htdocs_dir изменяется при каждой итерации цикла hosts_loop

DK_NEW_FILE дает команду системе обработки темплейтов создать файл с именем, идущим после DK_NEW_FILE (/usr/local/apache/conf.d/ в данном случае) и с содержимым от текущей метки до следующей или конца темплейта. метка DK_NEW_FILE должна находится в начале строки.


Personal Tools