Make config: відмінності між версіями
Sv (обговорення | внесок) Немає опису редагування |
Sv (обговорення | внесок) Немає опису редагування |
||
Рядок 30: | Рядок 30: | ||
'dhcp.tmpl' => { | 'dhcp.tmpl' => { | ||
# куда будет записан сформированный конфиг | # куда будет записан сформированный конфиг | ||
file => '/ | file => '/tmp/users.cvs', | ||
# системная команда, которая будет выполнена перед записью конфига, можно '' | # системная команда, которая будет выполнена перед записью конфига, можно '' |
Версія за 12:52, 19 березня 2019
Модуль ядра make config входит в базовую поставку и позволяет создавать конфигурационные файлы на лету. Например, с помощью make_config можно формировать:
- конфиг для dhcp-сервера
- данные пользователей, например, в cvs-файле для экспорта во внешние программы.
Результат формируется динамически - это значит, что он будет переформирован при изменении данных в биллинге.
Пример шаблона для экспорта в cvs:
{% for user in users %} {{ user.name }};{{ user.show_data._adr_street }} {% endfor %}
Здесь user.show_data._adr_street - вывод дополнительного поля _adr_street.
Необходимо отметить, что в дополнительных данных есть тип поля "выпадающий список", при этом в самом поле может храниться код, а отображаемое значение будет находиться в таблице dictionary:
- {{ user.data._adr_street }} - вывод значения, которое хранится в поле _adr_street (т.е там может быть код улицы)
- {{ user.show_data._adr_street }} - вывод преобразованного значения (имени улицы)
Кроме самого шаблона необходим файл настроек для модуля make_config: kernel/make_config.cfg. Он может быть таким:
run => 0, period => 60, template => { 'dhcp.tmpl' => { # куда будет записан сформированный конфиг file => '/tmp/users.cvs', # системная команда, которая будет выполнена перед записью конфига, можно '' cmd_before => '', # системная команда, которая будет выполнена после записи конфига, можно '' cmd_after => '/usr/local/etc/rc.d/isc-dhcpd forcestart >/dev/null', # удалять пустые строки pretty => 1, }, }, subs => { pretty_mac => sub { my $mac = shift; $mac =~ s/(..)/$1:/g; chop $mac; return $mac; }, }
Здесь:
- dhcp.tmpl - имя файла с шаблоном;
- /usr/local/etc/dhcpd.conf - имя файла, куда будет записан результат;
- переменная period указывает на период в секундах, с которым будут проверяться изменения данных в биллинге. Например, если period = 60 секундам, то при изменении ip какого-либо абонента, эти изменения отобразятся в конфиге dhcp максимум через 60 секунд (обычно раньше: от 1 до 60 сек);
- pretty_mac - функция, которая добавляет двоеточия в мак-адрес (в базе мак хранится в виде 001122334455).
Запустим модуль make_config с выводом результата на экран:
perl /usr/local/nodeny/nokernel.pl -v -m=make_config
Если результат корректный, добавим запуск make_config в автозагрузку:
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -d &' >> /etc/rc.local