Документация: ПО Факел — разрабатываемая версия
Работа с конфигурацией системы¶
Операционная система использует унифицированный формат файла для описания всех параметров своей конфигурации:
/config/config.boot.
Это обеспечивает легкую работу с конфигурацией системы в части создания шаблонов, резервного копирования и восстановления. Операционная система может быть перенесена на другое устройство с сохранением текущих настроек посредством создания копий определенных конфигурационных файлов.
Типы конфигурации системы¶
В контексте операционной системы существует три основных типа конфигурации:
Активная конфигурация - конфигурация системы, которая загружена и используется в настоящий момент. Любое изменение конфигурации должно быть применено для включения в активную конфигурацию.
Рабочая конфигурация - конфигурация системы, которая подвергается изменениям в режиме Конфигурирования. Изменения, внесенные в рабочую конфигурацию не вступят в силу до их применения с помощью команды
commit, после ввода которой конфигурация становится активной.Хранимая конфигурация - конфигурация, записанная в файл с помощью команды
save. Такой подход позволяет безопасно хранить конфигурацию для последующего использования. В системе может храниться несколько файлов с конфигурацией. Конфигурация по умолчанию или загруженная конфигурация хранится в файле /config/config.boot.
Редактирование рабочей конфигурации¶
Для редактирования рабочей конфигурации операционной системы используются команды set и delete.
Команды set и delete работают, когда операционная система находится в режиме Конфигурирования.
Чтобы установить значение существующего параметра в конфигурации или добавить новый параметр, используется команда set.
Команда set имеет иерархическую структуру. Выполняемые команды выстраиваются в последовательную цепочку, например set interfaces ethernet eth0 address 192.0.2.100/24.
При этом вся введенная информация, являющаяся избыточной для данного уровня, удаляется из введенной цепочки команд.
Команды относятся к уровню, на котором они выполняются:
Операционная система находится на самом верхнем уровне иерархической структур
fakel@fakel# set interfaces ethernet eth0 address 192.0.2.100/24
[edit]
Пример выше демонстрирует работу команды set interfaces ethernet eth0 address 192.0.2.100/24, которая выполняет настройку адреса для сетевого интерфейса eth0 когда операционная система находится на самом верхнем уровне иерархической структуры.
Операционная система находится на уровне иерархической структуры, который отвечает за конфигурацию сетевого интерфейса eth0
fakel@fakel# set address 192.0.2.100/24
[edit interfaces ethernet eth0]
Пример выше демонстрирует работу команды set address 192.0.2.100/24, которая выполняет настройку адреса для сетевого интерфейса eth0 когда операционная система находится на уровне иерархической структуры, который отвечает за конфигурацию сетевого интерфейса eth0.
Обе команды, представленные в примерах выше, идентичны, но выполняются на разных уровнях иерархической структуры.
Чтобы удалить запись из конфигурации, используйте команду delete.
Выполнение команды delete также приводит к удалению всех нижестоящих уровней в иерархической структуре.
При удаление записи элемента конфигурации его настройки переводятся к значению по умолчанию.
fakel@fakel# delete address 192.0.2.100/24
Пример выше демонстрирует работу команды delete address 192.0.2.100/24, которая удаляет IP адрес сетевого интерфейса eth0:
Чтобы применить изменения, которые были внесены в конфигурацию системы используйте команду commit.
Если в рабочей конфигурации нет изменений, команда выводит сообщение No configuration changes to commit.
Чтобы записать комментарий к применяемой версии в журнал версий конфигурации, используйте команду commit comment <text>.
Чтобы отменить все неприменённые изменения, не выходя из режима Конфигурирования, используйте команду discard.
Чтобы сохранить изменения, которые были внесены в конфигурацию системы используйте команду save.
Использование команды save без дополнительных параметров сохраняет активную конфигурацию системы в хранилище по умолчанию.
Сохраняется только примененная конфигурация: если в рабочей конфигурации есть неприменённые изменения, команда выводит предупреждение Warning: you have uncommitted changes that will not be saved..
Команда save также возвращает на верхний уровень иерархической структуры.
fakel@fakel# save
По умолчанию конфигурация системы храниться в файле, расположенном по следующему пути:
/config/config.boot
Если необходимо разместить конфигурационный файл в другом месте, в качества хранилища можно указать локальный путь или адреса SCP, SFTP, FTP и TFTP серверов.
fakel@fakel# save tftp://192.168.0.100/fakel.config.boot
Пример выше демонстрирует работу команды save tftp://192.168.0.100/fakel.config.boot, которая сохраняет конфигурацию системы в файл fakel.config.boot на tftp сервере 192.168.0.100.
Для выхода из режима Конфигурирования без применения внесенных изменений в конфигурации системы используйте команду exit discard.
fakel@fakel# exit discard
exit
fakel@fakel:~$
Команда exit discard, сбрасывает все изменения, внесенные в рабочую конфигурацию.
Подсказка
При использовании команды exit для выхода из режима Конфигурирования без применения внесенных изменений, операционная система выводит сообщение Cannot exit: configuration modified. и подсказку использовать команду exit discard.
Чтобы временно применить изменения, которые были внесены в конфигурацию, и установить период времени в минутах, необходимый для проверки корректности полученной конфигурации используйте команду commit-confirm.
Период задается числом минут после названия команды: commit-confirm <minutes>.
По умолчанию используется период времени длительностью в 10 минут.
Чтобы записать комментарий в журнал версий, добавьте в конец команды comment <text>.
Перед применением изменений система запрашивает подтверждение.
Ответ n отменяет команду, система выводит commit-confirm canceled.
Если ожидается подтверждение предыдущей команды commit-confirm, система выводит Another confirm is pending.
Команда confirm должна быть выполнена в течение заданного периода времени для окончательного применения конфигурации.
В противном случае операционная система вернется к предыдущей конфигурации.
Способ возврата задает параметр system config-management commit-confirm action:
При значении
reboot(по умолчанию) система перезагружается и загружает сохраненную конфигурацию. Применённые ранее, но не сохраненные изменения при этом теряются, поэтому передcommit-confirmвыполнитеsave. Если такие изменения есть, система предупреждает:You should save previous commits before commit-confirm !.При значении
reloadсистема без перезагрузки загружает предыдущую версию конфигурации. Для этого значения задайте параметрsystem config-management commit-revisions, иначе применение конфигурации завершится ошибкойcommit-confirm reload requires non-zero commit-revisions.
За 60, 15, 5 и 1 минуту до истечения периода (если соответствующий интервал короче заданного) система отправляет всем пользователям терминалов сообщение с напоминанием о необходимости подтвердить изменения.
Пример работы команды commit-confirm:
Нужно настроить межсетевой экран и проверить, что внесенные в конфигурацию изменения, не заблокируют доступ к операционной системе для администратора.
Для этого используйте команду commit-confirm.
Если после применения, внесенных изменений доступ к межсетевому экрану не заблокирован, используйте команду confirm, чтобы подтвердить примененные изменения.
В случае потери доступа к межсетевому экрану после использования команды commit-confirm, по истечении периода будет выполнен возврат к предыдущей конфигурации способом, заданным параметром commit-confirm action.
fakel@fakel# set firewall ipv4 input filter default-action drop
fakel@fakel# commit-confirm
commit-confirm will automatically reboot in 10 minutes unless changes
are confirmed.
Proceed ? [Y/n] y
Initialized commit-confirm; 10 minutes to confirm before reboot
[edit]
fakel@fakel# confirm
Reboot timer stopped
[edit]
Команда commit-confirm временно применяет изменения внесенные в конфигурацию системе в результате ввода команды set firewall ipv4 input filter default-action drop.
Если в течении 10 минут не будет выполнена команда confirm, в результате перезагрузки устройства будет выполнен возврат к сохраненной конфигурации системы.
Если подтверждение не ожидается, команда confirm выводит No confirm pending.
Чтобы скопировать определенный элемент конфигурации используйте команду copy.
С помощью команды copy можно копировать целые ветви иерархической структуры конфигурации.
Источник копирования состоит ровно из двух слов: типа записи и ее идентификатора, например rule 10.
После слова to указывается новая запись.
Путь отсчитывается от текущего уровня иерархической структуры.
Пример работы команды copy:
В цепочке input межсетевого экрана есть правило фильтрации, разрешающее трафик из определенной подсети; нужно добавить в эту цепочку похожее правило, но уже для другой подсети.
Для этого нужно перейти на соответствующий уровень иерархической структуры конфигурации - firewall ipv4 input filter, а затем использовать набор команд copy rule 10 to rule 20 для создания нового правила через копирование данных из уже существующего, после чего модифицировать правило с номером 20 необходимым образом.
# Просмотр рабочей конфигурации цепочки input
fakel@fakel# show firewall ipv4 input filter
default-action drop
rule 10 {
action accept
source {
address 203.0.113.0/24
}
}
[edit]
# Переход на иерархический уровень firewall ipv4 input filter
fakel@fakel# edit firewall ipv4 input filter
[edit firewall ipv4 input filter]
# Копирование параметров
fakel@fakel# copy rule 10 to rule 20
[edit firewall ipv4 input filter]
# Изменение параметров ip адреса
fakel@fakel# set rule 20 source address 198.51.100.0/24
[edit firewall ipv4 input filter]
# Применение внесенных изменений
fakel@fakel# commit
[edit firewall ipv4 input filter]
Чтобы переименовать определенный элемент конфигурации используйте команду rename.
С помощью команды rename можно переименовывать ветви иерархической структуры конфигурации.
Запись задается так же, как в команде copy: двумя словами, например rule 10, после слова to указывается новое имя.
fakel@fakel# rename rule 10 to rule 5
[edit firewall ipv4 input filter]
fakel@fakel# commit
[edit firewall ipv4 input filter]
Пример выше демонстрирует работу команды rename rule 10 to rule 5, которая переименовывает 10-е правило межсетевого экрана.
Для просмотра внесенных изменений в рабочую конфигурацию используйте команду show.
fakel@fakel# show
default-action drop
+rule 5 {
action accept
source {
address 203.0.113.0/24
}
}
rule 20 {
action accept
source {
address 198.51.100.0/24
}
}
Пример выше демонстрирует работу команды show на уровне иерархической структуры, который отвечает за настройку набора привил межсетевого экрана FromWorld.
Чтобы добавить текстовый комментарий (аннотацию) к выбранной секции конфигурации <config node> используйте команду comment <config node> "comment text".
В иерархической структуре конфигурации комментарий добавляется до выбранной секции.
При выводе на экран комментарий заключается в рамки, обозначаемые разделителями /* (начало комментария) и */ (конец комментария).
Добавление комментариев требует использования команды commit, как и любые другие изменения, вносимые в конфигурацию.
Для удаления существующего комментария из текущей конфигурации используйте ту же команду, но укажите пустую строку ("") в качестве параметра.
fakel@fakel# comment firewall all-ping "Comment example"
fakel@fakel# commit
fakel@fakel# show
firewall {
/* Comment example */
all-ping enable
broadcast-ping disable
...
}
Пример выше демонстрирует работу команды comment firewall all-ping "Comment example", которая добавляет комментарий к секции firewall.
Примечание
Важно отметить, что комментарий добавляется до выбранной секции конфигурации, то есть при использовании команды show <section> он не будет отображаться. Например, если добавить комментарий для к секции firewall, а затем использовать набор команд show firewall, то на экран будет выведено содержимое данной секции, но не комментарий.
Управление версиями конфигурации¶
Операционная система содержит встроенную систему учета версий конфигурации. Эта система автоматически сохраняет копию каждой предыдущей примененной конфигурации - версию конфигурации. Версии конфигурации хранятся локально и используются для отката, однако они также могут быть размещены на внешнем (удаленном) хранилище с целью организации архива резервных копий.
Локальное хранение версий конфигурации¶
Версии конфигурации автоматически сохраняются на диске устройства. Можно просмотреть список всех версий, выполнить сравнение версий и откат в к любой версии в случае возникновения проблем с функционированием операционной системы.
Для просмотра списка всех версий конфигурации, размещенных локально на диске устройства используйте команду show system commit.
Пример работы команды show system commit:
fakel@fakel:~$ show system commit
0 2015-03-30 08:53:03 by fakel via cli
1 2015-03-30 08:52:20 by fakel via cli
2 2015-03-26 21:26:01 by root via boot-config-loader
3 2015-03-26 20:43:18 by root via boot-config-loader
4 2015-03-25 11:06:14 by root via boot-config-loader
5 2015-03-25 01:04:28 by root via boot-config-loader
6 2015-03-25 00:16:47 by fakel via cli
7 2015-03-24 23:43:45 by root via boot-config-loader
Чтобы установить ограничение на количество версий конфигурации, сохраняемых локально на диске устройства используйте команду set system config-management commit-revisions <N>.
Значение параметра N может быть в диапазоне от 1 до 65535. Когда количество версий конфигурации превышает заданное значение, старые версии удаляются.
Если параметр не задан, журнал версий остается пустым, а команда show system commit выводит сообщение commit-revisions is not configured; commit log is empty or stale.
Если при применении конфигурации задан комментарий (commit comment <text>), он выводится отдельной строкой под записью версии.
Содержимое версии выводит команда show system commit file <N>, сравнение двух версий — команда show system commit file <N> compare <M>, а команда show system commit file <N> compare <M> commands выводит различия в виде команд конфигурирования.
Сравнение версий конфигурации¶
Операционная система позволяет сравнивать различные версии конфигурации.
Для вывода на экран списка отличий между конфигурациями используйте команду compare.
Команда принимает следующие формы:
compare— сравнение рабочей и активной конфигураций;compare saved— сравнение рабочей и сохраненной конфигураций;compare <N>— сравнение рабочей конфигурации с версией N;compare <N> <M>— сравнение версий N и M.
Вывод ограничен текущим уровнем иерархической структуры.
Слово commands в команде (compare commands, compare commands <N>, compare commands <N> <M>) выводит различия в виде команд для всей конфигурации.
Если различий нет, система выводит сообщение вида No changes between working and active configurations..
Если версии с номером N нет, система выводит Invalid revision number <N>.
fakel@fakel# compare [tab]
Possible completions:
commands Compare working & active configurations and show "set" commands
<Enter> Compare working & active configurations
saved Compare working & saved configurations
<N> Compare working with revision N
<N> <M> Compare revision N with M
Revisions:
0 2013-12-17 20:01:37 root by boot-config-loader
1 2013-12-13 15:59:31 root by boot-config-loader
2 2013-12-12 21:56:22 fakel by cli
3 2013-12-12 21:55:11 fakel by cli
4 2013-12-12 21:27:54 fakel by cli
5 2013-12-12 21:23:29 fakel by cli
6 2013-12-12 21:13:59 root by boot-config-loader
7 2013-12-12 16:25:19 fakel by cli
8 2013-12-12 15:44:36 fakel by cli
9 2013-12-12 15:42:07 root by boot-config-loader
10 2013-12-12 15:42:06 root by init
Команда compare позволяет выполнять следующие действия:
Сравнивать различные типы конфигураций
Сравнивать различные версии конфигурации с помощью команды
compare N M, где параметры N и M - идентификаторы версий
При выводе на экран результатов сравнения двух версий символом + обозначаются добавленные в конфигурацию N элементы по сравнению с конфигурацией M, а символом - обозначаются удаленные из конфигурации элементы соответственно.
Пример работы команды compare:
fakel@fakel# compare 0 6
[edit interfaces]
+ dummy dum1 {
+ address 10.189.0.1/31
+ }
[edit interfaces ethernet eth0]
+ vif 99 {
+ address 10.199.0.1/31
+ }
- vif 900 {
- address 192.0.2.4/24
- }
Пример выше демонстрирует работу команды compare 0 6, которая сравнивает 0 и 6 версии конфигурации операционной системы.
Для вывода на экран результатов сравнения двух версий примененной конфигурации используйте команду run show system commit diff <number>.
По умолчанию на экран выводятся результаты сравнения с активной конфигурацией.
Пример работы команды run show system commit diff <number>:
fakel@fakel# run show system commit diff 4
[edit system]
+ ipv6 {
+ disable-forwarding
+ }
Пример выше демонстрирует работу команды run show system commit diff 4, которая выводит результат сравнения версии активной конфигурации с конфигурацией 4.
Откат изменений конфигурации¶
Для отката изменений конфигурации к версии, указанной в параметре N используйте команду rollback <N>.
Пример работы команды rollback <N>:
fakel@fakel# compare 1
[edit system]
> host-name fakel-1
[edit]
fakel@fakel# rollback 1
Proceed with reboot ? [Y/n] y
Broadcast message from root@fakel-1 (pts/0) (Tue Dec 17 21:07:45 2013):
The system is going down for reboot NOW!
Ввод команды rollback приведет к применению указанной версии конфигурации и перезагрузке системы: система запрашивает подтверждение, записывает версию в сохраненную конфигурацию и перезагружается.
Номер версии берется из списка команды show system commit. Если номер не указан, система выводит Error: must include a revision # to rollback to. Если версии с таким номером нет, выводится сообщение Invalid revision number.
Чтобы вернуться к версии без перезагрузки, используйте команду rollback-soft <N>.
Команда загружает версию в рабочую конфигурацию. Затем просмотрите изменения командой compare и примените их командой commit.
fakel@fakel# rollback-soft 1
Rollback diff has been applied.
Use "compare" to review the changes or "commit" to apply them.
Использование внешнего хранилища версий конфигурации¶
Операционная система позволяет загружать версию конфигурации на внешнее (удаленное) хранилище после каждого использования команды commit.
Для сохранения версии конфигурации на внешнее хранилище нужно указать его адрес.
В качестве такого хранилища могут быть использованы TFTP, FTP, SCP, SFTP, HTTP, HTTPS серверы и репозитории Git (git+https):
scp://<user>:<passwd>@<host>:/<dir>sftp://<user>:<passwd>@<host>/<dir>ftp://<user>:<passwd>@<host>/<dir>tftp://<host>/<dir>http://<user>:<passwd>@<host>/<dir>https://<user>:<passwd>@<host>/<dir>git+https://<user>:<passwd>@<host>/<dir>
Таким образом каждый раз, когда конфигурация успешно применяется, файл config.boot копируется по указанному адресу. При этом копии задается новое имя config.boot-hostname.YYYYMMDD_HHMMSS. Копирование может выполняться по нескольким адресам одновременно.
Для того, чтобы задать адрес внешнего (удаленного) хранилище в формате URI используйте команду set system config-management commit-archive location <URI>.
Примечание
Количество версий конфигурации, хранимых локально на диске устройства, которое может задать администратор с помощью команды set system config-management commit-revisions <N> не распространяется на внешнее (удаленное) хранилище.
Операционная система не позволяет установить с внешним (удаленным) хранилищем защищенное (SSL/TLS) соединение, так как невозможно подтвердить легитимность данного хоста.
Однако есть обходное решение данной проблемы через добавление отпечатка SSH ключа хоста в файл ~/.ssh/known_hosts:
fakel@fakel# ssh-keyscan <host> >> ~/.ssh/known_hosts
Чтобы выгрузить конфигурацию во внешнее хранилище, не дожидаясь следующего commit, используйте команду режима «Администрирование» force commit-archive. Команда выполняет ту же выгрузку, что и commit: копирует последнюю примененную конфигурацию по каждому адресу, заданному командой set system config-management commit-archive location <URI>. Перед выгрузкой команда выводит сообщение Archiving config..., затем — каждый адрес без имени пользователя и пароля. Если адрес хранилища не задан, команда ничего не выгружает. Команда доступна пользователю уровня «Оператор» (см. Уровни пользователей).
force commit-archive¶
system config-management commit-archive location.Синтаксис:
force commit-archive
Режим: «Администрирование».
Сохранение и загрузка конфигурации вручную¶
Команды save и load используются для управления файлами конфигурации вручную.
Чтобы сохранить файл конфигурации используйте команду save.
Чтобы загрузить конфигурацию из файла используйте команду load.
Команда load <URI> используется для загрузки конфигурации из файла в рабочую конфигурацию, которая заменяет ее содержимое.
Загруженная конфигурация вступает в силу после выполнения команды commit.
Команда load без параметра загружает сохраненную конфигурацию из файла config.boot.
Для данной команды необходимо определить расположение файла в виде пути до него.
В качестве расположения можно указать локальный путь, имя файла в каталоге конфигураций или адреса SCP, SFTP, FTP, HTTP, HTTPS и TFTP серверов.
Файл конфигурации в формате gzip (с расширением .gz) загружается без предварительной распаковки.
Файлы, созданные в более ранних версиях ПО, система преобразует автоматически.
Если в рабочей конфигурации есть неприменённые изменения, команда load не выполняется: система выводит сообщение Cannot load: configuration modified. и предлагает применить или отменить изменения.
Команда также возвращает на верхний уровень иерархической структуры.
Если файл не найден, система выводит No such file '<file>'.
После загрузки система выводит Loading configuration from '<file>', а затем Load complete. Use 'commit' to make changes effective. либо No configuration changes to commit., если загруженная конфигурация не отличается от активной.
fakel@fakel# load
Possible completions:
<Enter> Load from system config file
<file> Load from file on local machine
scp://<user>[:<passwd>]@<host>:/<file> Load from file on remote machine
sftp://<user>[:<passwd>]@<host>/<file> Load from file on remote machine
http://<host>/<file> Load from file on remote machine
https://<host>/<file> Load from file on remote machine
ftp://<user>[:<passwd>]@<host>/<file> Load from file on remote machine
tftp://<host>/<file> Load from file on remote machine
Команда merge <file> [<path>] добавляет в рабочую конфигурацию только те команды из файла, которых еще нет в активной конфигурации.
Команды, которые уже есть в активной конфигурации, пропускаются.
Необязательный параметр <path> ограничивает добавление командами указанного пути конфигурации.
Расположение файла задается так же, как в команде load.
Команда merge не выполняется при неприменённых изменениях (Cannot merge: configuration modified.), а по завершении выводит Merge complete. Use 'commit' to make changes effective. либо No configuration changes to commit..
Восстановление конфигурации по умолчанию¶
Если требуется сбросить рабочую конфигурацию до состояния по умолчанию, используется команда load /opt/vyatta/etc/config.boot.default.
Команда загружает конфигурацию по умолчанию в рабочую конфигурацию и выводит сообщение Load complete. Use 'commit' to make changes effective..
Для применения загруженной конфигурации используется команда commit.
После применения операционная система будет использовать конфигурацию по умолчанию.
Чтобы конфигурация по умолчанию использовалась и после перезагрузки, выполните команду save.
Примечание
В процессе сброса конфигурации до состояния по умолчанию удаленное подключение к устройству будет сброшено. Поэтому перед выполнением сброса рекомендуется создать копию конфигурации, внести в нее изменения для обеспечения сетевой связности, а потом загрузить измененную конфигурацию.