=======Использование shell для автоматизации задач на Juniper SRX cluster ======= ==== Введение. ==== Обновление баз IDP на Juniper SRX cluster представляло из себя набор ручных процедур (До выхода версии Junos 12.1).\\ См. [[http://kb.juniper.net/InfoCenter/index?page=content&id=KB21052|статью 1]] и [[http://kb.juniper.net/InfoCenter/index?page=content&id=KB1648|статью 2]]. Встала проблема автоматизации.\\ Платформы на базе JUNOS предоставляют большое количество возможностей по автоматизации используя: - shell\\ - perl\\ - python\\ - JUISE\\ - и т.д\\ Полный список [[https://techwiki.juniper.net/Automation_Scripting/010_Getting_Started_and_Reference|тут]]. В данной статье будет показан пример автоматизации задачи с использование shell.\\ ==== Решение. ==== Решение состоит из одного скрипта на каждом из узлов, запускаемого по cron :\\ В скрипте на каждом из узлов не забудьте поставить соответсвующие X и Y.\\ di.sh (для редактирования есть vi)\\ #!/bin/sh #download and install DB script #check primary node act_node=`/usr/sbin/cli show chassis cluster status | /usr/bin/grep nodeX | /usr/bin/awk '{print $3}'` #where X node number that start script. For node0 set X=0 for node1 set X=1 count=0 #check for redundancy group 0 for x in $act_node do active_node=$x count=`expr $count + 1` if [ $count -eq 1 ] then break 1 fi done if [ "$active_node" = "primary" ] then #check new version of IDP DB chk_lver=`/usr/sbin/cli show security idp security-package-version node X | /usr/bin/grep Attack | /usr/bin/awk '{print $3}' | sed -e 's/version://g'` #where X node number that start script. For node0 set X=0 for node1 set X=1 chk_sver=`/usr/sbin/cli request security idp security-package download check-server | /usr/bin/grep "Version" | /usr/bin/awk '{print $2}' | sed -e 's/info://g'` if [ "$ch_lver" != "$chk_sver" ] then /usr/sbin/cli request security idp security-package download /bin/sleep 3600 chk_dstatus=`/usr/sbin/cli request security idp security-package download status | /usr/bin/grep "Successfully downloaded"` if [ ! -z "$chk_dsatus" ] then /usr/sbin/cli request security idp security-package install node X /usr/sbin/cli request security idp security-package install policy-templates node X #where X node number that starts script. For node0 set X=0 for node1 set X=1 /bin/rm -rf nodeY:/var/db/idpd/sec-download/* /bin/sleep 180 /bin/rcp -r -T /var/db/idpd/sec-download/* node1:/var/db/idpd/sec-download/ /bin/sleep 180 /usr/sbin/cli request security idp security-package install node Y /usr/sbin/cli request security idp security-package install policy-templates node Y #where Y second node number. For node0 that starts script set Y=1 for node1 set Y=0 fi fi fi Скрипт необходимо положить на каждый и двух узлов кластера в директорию /var/tmp\\ Запустить на каждом узле кластера cron.\\ При работе с primary узла (в нашем случае primary - node0):\\ %chmod +x /var/tmp/di.sh %crontab -e 1 3 * * * sh /var/tmp/di.sh Заходим на второй узел:\\ %rlogin -Jk -T node1 %chmod +x /var/tmp/di.sh %crontab -e 1 3 * * * sh /var/tmp/di.sh ==== PS. ==== Если перед вами стоит задача автоматизации с необходимостью редактирования конфигурации на клаcтере, помните, что все команды по замене конфигурации и commit должны проходить в рамках одной команды (сесии).\\ Пример синтаксиса скрипта:\\ #!/bin/sh echo "configure delete routing-instances EXT_ROUTER protocols bgp group ISP1 export ASPREPAND set routing-instances EXT_ROUTER protocols bgp group ISP1 export ISP-out-deny commit" | /usr/sbin/cli ==== Об авторе ==== [[https://www.linkedin.com/pub/alexey-vyrodov/59/976/16b|Profile]] автора