• サービスプロバイダーに好まれるオペレーション

 
 
Print Friendly, PDF & Email

初めに

Arista EOSはインダストリースタンダードCLIをサポートしています。

インダストリースタンダードCLIは 下記の様なオペレーションをサポートします。

  • ?を押すとヘルプを表示
  • tabを押すと候補になるコマンドが表示
  • 設定変更はダイナミックに反映される

多くの運用者に好まれるインダストリースタンダードCLIですが、最後の設定変更に関しては様々な意見があるようです。

Commitベースオペレーション

サービスプロバイダーの運用者の方などから一番多く聞かれるのはcommitベースのオペレーションです。

これは設定変更はダイナミックに行わず、コンフィグ変更のみを実施。実際の設定に反映されるのは設定の変更のdiffなどを確認した後にcommitで設定を反映させるという方式になります。

実はEOSにはいくつかのconfigurationのオプションがあります。

commitベースのオペレーションはconfigure sessionで設定モードに入ると実行可能です。

vEOS1#configure ?
 convert Perform configuration conversion
 network Read Configuration from the Network
 replace Replace configuration state
 session Enter configuration session; commands applied only on commit
 terminal Configure from the terminal
 <cr>
vEOS1#configure session
vEOS1(config-s-sess2)#hostname Arista
vEOS1(config-s-sess2)#
vEOS1(config-s-sess2)#
vEOS1(config-s-sess2)#
vEOS1(config-s-sess2)#show session-config diffs
--- system:/running-config
+++ session:/sess2-session-config
@@ -4,7 +4,7 @@
 !
 transceiver qsfp default-mode 4x10G
 !
-hostname vEOS1
+hostname Arista
 !
 spanning-tree mode mstp
 !

vEOS1(config-s-sess2)#
vEOS1(config-s-sess2)#commit
Arista#
Arista#

設定変更のロールバック

運用をやられてる方の悩みどころとして、設定変更をおこなった所、結果アクセスがで出来なくなった。

などの運用ミスもあると思います。

具体的にすぐ思いつくのは、こんな運用ミスでは無いでしょうか?

SSHやTelnetでアクセスし、アクセスリストを追加した。

自分がアクセス出来なくなった。

実はconfig sessionのcommitにはタイマーオプションがあり、時間内にcommitが行われない場合にはロールバックする事が可能です。

vEOS1(config-s-sess7-cp)#commit ?
 timer commit session with a timeout. If not committed within this time, config will be reverted.
 <cr>

vEOS1(config-s-sess7-cp)#commit timer ?
 timeout Time in hh:mm:ss format

vEOS1(config-s-sess7-cp)#commit timer 00:00:10

上記の例ですと10秒後にロールバックを行い、アクセスリストで設定間違いが万が一あった場合にも再びアクセス出来る事になります。

保存コンフィグへのロールバック

ロールバックのやり方はいくつかあると思います。

EOSのconfigモードにはsessionと同様にreplaceがあります。

Arista#configure ?
 convert Perform configuration conversion
 network Read Configuration from the Network
 replace Replace configuration state
 session Enter configuration session; commands applied only on commit
 terminal Configure from the terminal
 <cr>

Arista#configure replace ?
 boot-extensions Copy boot extensions configuration
 certificate: Source file path
 clean-config Copy from clean, default, configuration
 extension: Source file path
 file: Source file path
 flash: Source file path
 ftp: Source file path
 http: Source file path
 https: Source file path
 installed-extensions Copy installed extensions status
 running-config Copy from current system configuration
 scp: Source file path
 sftp: Source file path
 startup-config Copy from startup configuration
 system: Source file path
 terminal: Source file path
 tftp: Source file path


Arista#configure replace flash:demo-default.cfg
vEOS1#
vEOS1#
vEOS1#

 

本例では予め保存してあったflash:demo-default.cfgにロールバックをしています。

またconfig replaceコマンドはhttp/https/scpにも対応しているので、世代管理が出来るシステムにて保存し、なにかあればそこからロールバックを行うという事も出来ると思います。

EOSではdiffコマンドで任意の2つのファイルの比較も行う事が可能です。ロールバックする際に事前に確認をする事も出来ます。

vEOS1#diff startup-config running-config
--- flash:/startup-config
+++ system:/running-config
@@ -1,10 +1,10 @@
-! device: Arista (vEOS, EOS-4.18.2F)
+! device: vEOS1 (vEOS, EOS-4.18.2F)
 !
 ! boot system flash:/vEOS-lab-4.18.2F.swi
 !
 transceiver qsfp default-mode 4x10G
 !
-hostname Arista
+hostname vEOS1
 !
 spanning-tree mode mstp
 !

Arista EOSはLinuxカーネル上で動作します。Linuxで使用出来る様々なアプリケーションを使用することができるので、それらを活用する事が出来ます。

またEvent Managerではトリガーとなるイベントを定義し、任意のbashコマンドを実施する事が出来ます。

トリガーでは様々なイベントを指定する事が出来ますが、on-startup-configというイベントを設定する事で、スタートアップコンフィグに変更があった際に自動的にローカルなファイルシステム/コンフィグ管理サーバーに保存することが可能です。

vEOS1(config)#event-handler ?
 WORD Event-handler name

vEOS1(config)#event-handler backup
vEOS1(config-handler-backup)#?
 action Define event-handler action
 asynchronous Set the action to be non-blocking
 delay Configure event-handler delay
 threshold Threshold time window where a number of events should happen
 timeout Set the expected time the action should finish in
 trigger Configure event trigger condition
 ----------------------------------------
 comment Up to 240 characters, comment for this mode
 default Set a command to its defaults
 exit Exit from Event handler configuration mode
 no Negate a command or set its defaults
 show Show running system information
 !! Append to comment

vEOS1(config-handler-backup)#trigger ?
 on-boot trigger condition occurs on system boot
 on-counters trigger condition occurs on evaluating statistical counters
 on-intf trigger condition occurs on specified interface changes
 on-logging trigger condition occurs when regex match any log message
 on-maintenance trigger condition occurs on maintenance operation
 on-startup-config trigger condition occurs on startup config changes
 vm-tracer trigger condition occurs on VmTracer events

vEOS1(config-handler-backup)#trigger on-startup-config
vEOS1(config-handler-backup)#action ?
 bash Define BASH command action

vEOS1(config-handler-backup)#action bash ?
 COMMAND BASH command

 

 

この機能を使えば、例えばスタートアップコンフィグに変更があるたびに、現在のスタートアップにタイムスタンプをつけて、101個まで保存するなども可能です。

 

 

event-handler rollback
 trigger on-startup-config
 action bash FN=/mnt/flash/startup-config; LFN="`ls -1 $FN.*-* | tail -n 1`"; if [ -z "$LFN" -o -n "`diff -I 'last modified' $FN $LFN`" ]; then cp $FN $FN.`date +%Y%m%d-%H%M%S`; ls -1r $FN.*-* | tail -n +101 | xargs -I % rm %; fi
 delay 0


まとめ

EOSではデフォルトでインダストリースタンダードCLIをサポートします。

多くのコンフィグモードがあり、config sessionではcommitベースのオペレーションまたtimerベースのロールバックを実施する事が可能

特定のファイルへのロールバックはconfig replaceで実施する事が可能。

各コンフィグファイルはdiffで差分確認が可能

スタートアップコンフィグの変更などをトリガーにリモート/ローカル、100を超える世代管理など可能

多くの運用者の皆さんに使って頂けれる機能だと思います。

参考

Config sessions

Config Session Commit Timer

How to keep last X startup configs

 

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: