Make config: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
Немає опису редагування
Рядок 1: Рядок 1:
Модуль ядра '''make config''' входит в базовую поставку и позволяет создавать конфигурационные файлы '''на лету'''. Например, с помощью make_config можно формировать:
Модуль ядра '''make config''' входит в базовую поставку и позволяет создавать конфигурационные файлы '''на лету'''. Например, с помощью make_config можно формировать:
* [[dhcp-конфиг с помощью make config|конфиг для dhcp-сервера]]
* [[dhcp-конфиг с помощью make config|конфиг для dhcp-сервера]]
* данных пользователей, например, в cvs-файле для экспорта во внешние программы.
* данные пользователей, например, в cvs-файле для экспорта во внешние программы.


Результат формируется динамически - это значит, что он будет переформирован при изменении данных в биллинге.
Результат формируется динамически - это значит, что он будет переформирован при изменении данных в биллинге.
Рядок 20: Рядок 20:
* '''<nowiki>{{ user.data._adr_street }}</nowiki>''' - вывод значения, которое хранится в поле _adr_street (т.е там может быть код улицы)
* '''<nowiki>{{ user.data._adr_street }}</nowiki>''' - вывод значения, которое хранится в поле _adr_street (т.е там может быть код улицы)
* '''<nowiki>{{ user.show_data._adr_street }}</nowiki>''' - вывод преобразованного значения (имени улицы)
* '''<nowiki>{{ user.show_data._adr_street }}</nowiki>''' - вывод преобразованного значения (имени улицы)
Кроме самого шаблона необходим файл настроек для модуля make_config: kernel/make_config.cfg. Он может быть таким:
<pre>
run    => 0,
period  => 60,
template  => {
            'dhcp.tmpl' => {
                # куда будет записан сформированный конфиг
                file      => '/usr/local/etc/dhcpd.conf',
                # системная команда, которая будет выполнена перед записью конфига, можно ''
                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;
            },
}
</pre>
Здесь:
* dhcp.tmpl - имя файла с шаблоном;
* /usr/local/etc/dhcpd.conf - имя файла, куда будет записан результат;
* переменная period указывает на период в секундах, с которым будут проверяться изменения данных в биллинге. Например, если period = 60 секундам, то при изменении ip какого-либо абонента, эти изменения отобразятся в конфиге dhcp максимум через 60 секунд (обычно раньше: от 1 до 60 сек);
* pretty_mac - функция, которая добавляет двоеточия в мак-адрес (в базе мак хранится в виде 001122334455).
Запустим модуль make_config с выводом результата на экран:
<pre>
perl /usr/local/nodeny/nokernel.pl -v -m=make_config
</pre>
Если результат корректный, добавим запуск make_config в автозагрузку:
<pre>
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -m=make_config -d &' >> /etc/rc.local
</pre>

Версія за 12:51, 19 березня 2019

Модуль ядра make config входит в базовую поставку и позволяет создавать конфигурационные файлы на лету. Например, с помощью make_config можно формировать:

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


Пример шаблона для экспорта в 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       => '/usr/local/etc/dhcpd.conf',

                # системная команда, которая будет выполнена перед записью конфига, можно ''
                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