Вы посетили: » services
Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
| ru:base:services 2006/11/20 10:52 | ru:base:services 2006/11/20 12:00 текущий | ||
|---|---|---|---|
| Строка 8: | Строка 8: | ||
| Также в меню //actions// можно видеть раздел //filegens//. //Filegens// это темплейты всех файлов, которые заливаются на сервер.\\ | Также в меню //actions// можно видеть раздел //filegens//. //Filegens// это темплейты всех файлов, которые заливаются на сервер.\\ | ||
| == Filegens == | == Filegens == | ||
| - | //Filegens// (генераторы) представляют из себя простой способ генерации любых конфигов прямо из базы, без написания лишнего кода. Для этого используется специально подготовленный //perl-hash//, называемый //datasource//. Его структура аналогична структуре базы.\\ | + | //Filegens// (генераторы) представляют из себя простой способ генерации любых конфигов прямо из базы, без написания лишнего кода. \\ |
| Рассмотрим самый простой пример, генерация конфига //vhosts.conf// для веб-сервера apache.\\ | Рассмотрим самый простой пример, генерация конфига //vhosts.conf// для веб-сервера apache.\\ | ||
| - | Для этого мы используем datasource //hosts_accounts//, в котором содержиться вся необходимая информация.\\ | + | Идем в //base/services//, добавляем к сервису webserver новый генератор test. \\ |
| - | Идем в //base/filegens/add//\\ | + | |
| //**Name**// - это имя //filegen//. При перестройке сервисов порядок вызова генератора определяется им.\\ | //**Name**// - это имя //filegen//. При перестройке сервисов порядок вызова генератора определяется им.\\ | ||
| Строка 54: | Строка 53: | ||
| == Использование нескольких одинаковых циклов. === | == Использование нескольких одинаковых циклов. === | ||
| - | Пример: \\ | + | В случае, если нужно использовать в одном уровне вложенности несколько одинаковых циклов применяется следующий путь: \\ |
| - | Accounts: <TMPL_LOOP accounts_loop><TMPL_VAR login> </TMPL_LOOP> \\ | + | Пример (два цикла accounts_loop рядом): \\ |
| - | Hosts: <TMPL_LOOP accounts_loop><TMPL_LOOP hosts_loop><TMPL_VAR name> </TMPL_LOOP></TMPL_LOOP> \\ | + | <code> |
| + | Accounts: <TMPL_LOOP accounts_loop><TMPL_VAR login> </TMPL_LOOP> | ||
| + | Hosts: <TMPL_LOOP accounts_loop><TMPL_LOOP hosts_loop><TMPL_VAR name> </TMPL_LOOP></TMPL_LOOP> | ||
| + | </code> | ||
| работать **НЕ БУДЕТ**, так как в темплейте два одинаковых внешних цикла accounts_loop и система будет пытаться присвоить переменные от одного цикла другому, что будет вызывать ошибку. \\ | работать **НЕ БУДЕТ**, так как в темплейте два одинаковых внешних цикла accounts_loop и система будет пытаться присвоить переменные от одного цикла другому, что будет вызывать ошибку. \\ | ||
| Обходной путь - использовать номера в имени цикла. \\ | Обходной путь - использовать номера в имени цикла. \\ | ||
| Правильный пример: \\ | Правильный пример: \\ | ||
| - | Accounts: <TMPL_LOOP accounts_loop><TMPL_VAR login> </TMPL_LOOP> \\ | + | <code> |
| - | Hosts: <TMPL_LOOP **2_accounts_loop**><TMPL_LOOP hosts_loop><TMPL_VAR name> </TMPL_LOOP></TMPL_LOOP> \\ | + | Accounts: <TMPL_LOOP accounts_loop><TMPL_VAR login> </TMPL_LOOP> |
| - | 2_accounts_loop - будет браться цикл accounts_loop, но не возникнет коллизии имен. \\ | + | Hosts: <TMPL_LOOP 2_accounts_loop><TMPL_LOOP hosts_loop><TMPL_VAR name> </TMPL_LOOP></TMPL_LOOP> |
| + | </code> | ||
| + | Обратите внимание, что во втором случае вместо accounts_loop стоит 2_accounts_loop - будет браться цикл accounts_loop, но не возникнет коллизии имен. \\ | ||
| - | == Деление темплейта на куски. == | + | == Генерация нескольких файлов из одного темплейта. == |
| Иногда необходимо сделать группу конфигурационных файлов. Как пример можно привести файлы зон //named// или виртуальных хостов //apache//. Самый простой способ деления - вставлять в темплейт метки начала деления //DK_NEW_FILE//. Пример: создаем файлы вирутальных хостов //apache//, по файлу на виртхост:\\ | Иногда необходимо сделать группу конфигурационных файлов. Как пример можно привести файлы зон //named// или виртуальных хостов //apache//. Самый простой способ деления - вставлять в темплейт метки начала деления //DK_NEW_FILE//. Пример: создаем файлы вирутальных хостов //apache//, по файлу на виртхост:\\ | ||
| <code> | <code> | ||
| - | DK_NEW_FILE /usr/local/apache/conf.d/ | + | DK_NEW_FILE /usr/local/apache/conf.d/<TMPL_VAR name>.conf |
| ServerName <TMPL_VAR name> | ServerName <TMPL_VAR name> | ||
| Строка 75: | Строка 79: | ||
| </code> | </code> | ||
| - | //DK_NEW_FILE// дает команду системе обработки темплейтов создать файл с именем, идущим после //DK_NEW_FILE// (/usr/local/apache/conf.d/ в данном случае) и с содержимым от текущей метки до следующей или конца темплейта. | + | //DK_NEW_FILE// дает команду системе обработки темплейтов создать файл с именем, идущим после //DK_NEW_FILE// (/usr/local/apache/conf.d/<TMPL_VAR name> в данном случае) и с содержимым от текущей метки до следующей или конца темплейта. |
| метка //DK_NEW_FILE// должна находится в начале строки.\\ | метка //DK_NEW_FILE// должна находится в начале строки.\\ | ||

