Общие сведения об автоматизации в JunOS
Junos scripts могут быть написаны на SLAX или XSLT. XSLT активно использует XPath и XML.
XML input (source tree)+ Your Script (stylesheet tree) = XML output (result tree)
XSLT - немного неудобен, особенно для написания сложных программ, поэтому Junier использует свою модификацию, которая называется SLAX.
Junos Automation Scripts бывают 3х видов:
- Operations Automation - создание команд для мониторинга сети, скрипт для изменения конфига (под контролем/проверкой), специальные команды для определенных целей и нужд юзеров. Все это дает возможность уменьшить риски ошибок, автоматизировать troubleshooting.
Вызываются обычно из CLI, op scripts могут автоматизировать те действия, которые сам user может ввести вручную.
CLI команды и XML RPC (API remote procedure called ) выглядит не одинаково. Чтобы узнать как выглядит XML RPC, можно через "|" указать "| display xml rpc"
blair> show interfaces descriptions | display xml rpc <rpc-reply xmlns:junos="http://xml.juniper.net/junos/12.1X47/junos"> <rpc> <get-interface-information> <descriptions/> </get-interface-information> </rpc>
- Conguration Automation - действует когда вызывается config/commit операций. Представление сложных конфигов в несколько понятных и доступных команд. Можно использовать опции, обеспечивающие warnings, post loggs, self-correct, prevent the configuration. Дает возможность соблюдать политики безопасности компании, упрощает и ускоряет процесс настройки.
Commit scripts вызываются каждый раз при commit (commit confirmed). Используются для изменения candidate config, для обнаружения проблем с конфигом, для предотвращения, чтобы config стал активным. Также скрипты могут использовать operational команды.
В качестве source tree = candidate config, stylesheet tree = commit script, result tree = набор XML блоков, кот могут изменить candidate config, warnings, prevent the config to become active.
Может использоваться несколько commit scripts. Каждый работает с одинаковой копией candidate config. Commit scripts применяются в порядке написания в конфиге. Те секции конфига, которые уже подверглись обработке более приоритетным скриптом не будут подвергаться обработке следующих скриптов.
- Event Automation - скрипт, реагирующий на определенные события на оборудовании. Собирает соответствующую информацию об устранении неполадок и применяет их при возникновении аварийных триггеров. Также автоматизирует ответы на события, предоставляя набор действий. Например operationl commands, config changes, logging.
Обычно выполняются из под root, но можно задать и любой другой user content.
source tree = XML event-script-input, stylesheet tree = event script, result tree = XML block event-script-result.
Global variables Скрипты имеют доступ до глобальных переменных: $hostname, $product, $script, $user, ...
&junos-context - глобальная переменная, которая хранит в себе мелкие переменные, которые можно будет использовать при запуске скрипта. Это удобно с точки зрения масштабируемости.
Все скрипты хранятся на устройстве.
- пишем скрипт на компе (удобно использовать разные text editor, поддерживающие XML синтаксис. Support SLAX in jEdit and Eclipse).
- копируем скрипт на Juniper устройство в нужную директорию: /var/run/scripts. Далее для каждого типа скрипта есть своя папочка.
/var/run/scripts/import - не трогать - это только для Juniper
/var/run/scripts/lib - можно сюда файлы, которые используются в скриптах.
- тестируем и отлаживаем скрипт. Чтобы скрипт заработал, активируем его
[edit system scripts op] set file my-op-script.slax
[edit system scripts commit] set file my-commit-script.slax
[edit event-options event-script] set file my-event-script.slax
Редактировать можно будет на самом Juniper.
Debug:
- syntax. Можно использовать slaxproc еще до загрузки на устройство.
- logic. В коде скрипта можно использовать для отладки: print, traceoptions, trace, progress.
© Наталия Бобкова 2014—2022