Использование shell для автоматизации задач на Juniper SRX cluster

Введение.

Обновление баз IDP на Juniper SRX cluster представляло из себя набор ручных процедур (До выхода версии Junos 12.1).
См. статью 1 и статью 2. Встала проблема автоматизации.

Платформы на базе JUNOS предоставляют большое количество возможностей по автоматизации используя: - shell
- perl
- python
- JUISE
- и т.д

Полный список тут. В данной статье будет показан пример автоматизации задачи с использование 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
  

Об авторе

Profile автора

ru/jobs/juniper_cluster_shell.txt · Last modified: 2015/03/12 17:14 by admin
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki