Конфиг штука важная, поскольку хранит результаты непосильного труда админов. Сегодня мы посмотрим, что с ним можно сделать и как по максимуму обеспечить удобство работы с ним и его целостность.
Немного теории
Для начала посмотрим, как именно вьятта работает со своими настройками. Каждый конфиг проходит в своей жизни три стадии:
- Рабочая копия (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

» Оставить комментарий
Вы должны войти чтобы прокомментировать.