Конфиг штука важная, поскольку хранит результаты непосильного труда админов. Сегодня мы посмотрим, что с ним можно сделать и как по максимуму обеспечить удобство работы с ним и его целостность.
Немного теории
Для начала посмотрим, как именно вьятта работает со своими настройками. Каждый конфиг проходит в своей жизни три стадии:
- Рабочая копия (working);
- Действующий конфиг (active);
- Сохраненный конфиг.
Рабочая копия это то, что получается когда пользователь внес изменения, но еще не применил их. На каждую сессию (на вход пользователя или работу скрипта) создается своя рабочая копия. У нее два варианта дальнейшей жизни: быть объединенной с действующей (командой commit) или быть отброшенной.
Действующий конфиг это, очевидно, тот, который система в настоящий момент использует.
Сохраненный конфиг это простой текстовый файл. По умолчанию они хранятся в каталоге /opt/vyatta/etc/config/
.
Для тех, кому интересно, как рабочая и действующая копии конфига устроены внутри. Это деревья каталогов в /opt/vyatta/config/active
(для действующего) и /opt/vyatta/config/tmp/* (для рабочих копий). Узлу, например, service telnet port
там соответствует каталог service/telnet/port
. Значение для узла хранится в файле node.val
Трогать это все руками не рекомендуется, если только не для изучения внутреннего устройства системы.
Делаем копии конфига
Получить копию дейстующего конфига на стандартный вывод можно командой show|no-more
. В этом случае он будет показан целиком, без разделения на экраны, как это происходит по умолчанию.
Сохраненные конфиги это простые текстовые файлы. Тот, который загружается по умолчанию, называется /opt/vyatta/etc/config/config.boot
. Командой save
с аргументом (вроде save config-2011.04.01
можно сохранить его под другим именем.
Загрузить ранее сохраненный конфиг можно командой load <FILE NAME>
. Также можно загружать его по сети, указав URL (например, load ftp://example.com/config.txt
).
Так же можно и сохранять конфиг на удаленный сервер, указав целевой URL. Например, save tftp://192.0.2.1/config.boot
Кроме этого, в системе есть файл, который хранит настройки по умолчанию (которые использует свежеустановленная система), называется он /opt/vyatta/etc/config.boot.default
. Соответственно, загрузив его, можно вернуться к начальным настройкам.
Копируем кусок конфига с другой системы
Тут есть два варианта. Первый по идеологии напоминает Cisco и состоит в получении команд текущего конфига и вставке их в консоль целевой системы. Просмотреть команды можно с помощью команды операционного режима show configuration commands|match <KEYWORD>
, где KEYWORD — слово для выборки, например, «service ssh».
# run show configuration commands |match "service ssh" set service ssh port '22' set service ssh protocol-version 'v2'
Второй состоит в слиянии двух файлов конфигурации командой merge
. Для этого нужно подготовить файл с нужным куском настроек, перенести его на целевую систему (или положить в доступное по сети место) и ввести команду merge /path/to/file
. Вам выдадут предупреждение об отсутствиии строки версии (если вы не скопировали ее из оригинального конфига, это самая последняя строка), но его можно игнорировать.
Автоматизируем резервное копирование конфига
Начиная с версии 6.2 появилась возможность автоматически делать резервную копию конфига после каждого commit’а. Делается это следующим образом: set system config-management commit-archive location <URL>
. Например:
# show system config-management commit-archive { location ftp://10.91.17.5/pub/configs }
Все, теперь каждый раз, когда вы применяете свои изменения, ваш конфиг будет копироваться в указанное место под именем вида config.boot-yourhostname.yyyymmdd_hhmmss
.
Поддерживается сохранение по TFTP, FTP и SCP.
Ищем виноватых
Начиная опять же с 6.2 каждый commit оставляет свой след в истории, и даже сохраняются тексты разных ревизий конфига. Настроить количество ревизий для хранения можно командой: set system config-management commit-revisions <NUMBER>
.
Командой операционного режима show system commit
можно увидеть имеющиеся ревизии. Примерно так:
# run show system commit 0 2011-04-01 00:20:36 by vyatta via cli 1 2011-04-01 00:08:30 by user1 via cli 2 2011-04-01 00:03:16 by user2 via cli 3 2011-04-01 00:01:52 by user3 via cli
Можно посмотреть либо конфигурацию целиком, как она выглядела на момент ревизии с некоторым номером по команде show system commit file <NUMBER>
, либо ее отличия от текущей командой show system commit diff <NUMBER>
. Например:
# run show system commit diff 0 @@ -110,7 +110,7 @@ console { } domain-name baturin.org - host-name dut1 + host-name r1 login { user vyatta { authentication { @@ -121,8 +121,6 @@ } name-server 10.91.17.10 ntp { - server 0.vyatta.pool.ntp.org { - } server 1.vyatta.pool.ntp.org { } server 2.vyatta.pool.ntp.org {
Появившиеся в ревизии строки отмечены символом «+», убранные в ней, соответственно, символом «-».
Заключение
Мы рассмотрели ряд приемов работы с конфигом. Надеюсь, они окажутся полезными в вашей работе.
Опубликовано: Vyatta
» Оставить комментарий
Вы должны войти чтобы прокомментировать.