Cisco IOS Operation Tips. (2)

id:stereocat:20091122:1258894588 の続き。こういうのはある程度体温の高いときにやっちゃわないとね。

を先ほどざっと読んだので、いくつかメモを。

制約事項

  • メモリは、現在のconfig と置き換えられるconfig 両方を保持できるだけの十分な空きが必要
  • 物理IF 行はrunning config から削除できない
  • サブコマンド(ip address/subnetなど)はリプレース対象となる
  • 特定のIOSコマンドは、ルータが再起動されない限り完全には削除されない
  • TFTP によるArchive config はセキュリティリスクがあるため、FTP or RCP 使用を推奨
Configuration Replace and Rollback 注意事項

Configuration Archive

Configuration Replace/Rollback を考えるに当たって、この機能自体はオプション。後述するが、Config Rollback/Replace はその機器の完全なコンフィグファイルがあれば、機器内部のファイルシステムでも、外部に保存されたコンフィグファイルでも使うことができる。Replace/Rollback 対象とするコンフィグファイルを効率的に取っておくための仕組みとして Configuration Archive は便利な機能ではある。

Configuration Rollback

  • "configure replace" は現在の running-config を何処かに保存された任意の IOS config file と置き換える機能。
  • "copy running-config" との違いは何か? というのを理解しておくのが重要。*1
    • 設定削除: ある設定が、現在の running-config には存在するが、置き換えたい config file には存在しない場合。
    • コマンド適用: 置き換え対象として指定したファイル がどのように処理されるか。
    • 要件: 置き換え対象として指定するファイルの条件。
point copy running-config config replace
設定削除 マージされる。最終的な running-config は、当初の running と のどちらか片方に含まれる設定になる。設定は削除されない。(OR) 削除される。最終的な running-config は と一致する。当初の running にあって に含まれない設定は削除される。
コマンド適用 指定されたファイルを1行ずつすべて適用する。サービスによっては、設定の再適用が発生するため機能停止が起きうる。 現在の running との差分を取り*2、差分だけを適用する。変更したい機能以外の動作への影響が少ない。
要件 部分的な config file を指定できる。(まとまった設定の適用) 完全なコンフィグファイルを指定する必要がある。
  • つまり、"copy runnning" は単なる設定投入、"configure replace " は へ置き換える(replace/rollback)だということだ。今までは足し算しかできなかったのだけど、(完全なコンフィグがあれば)ちゃんと引き算もできるようになった。
  • 機器の動作 (running-config) を特定の config file と同じ状態へ巻き戻す、というのはこれまで、"copy startup" して reload とか結構やっかいなオペレーションだった。特にサービスに動いている機械ではそうそう再起動ができるわけでもないので。が、Config Replace だと再起動なしでコマンド一発でやれるようになってる。
    • 上記の通り制限事項があるので、サービスレベルの厳しいところだと事前に一度、検証環境とかで試してみるべきだろうけど、それでもかなりダウンタイムは短縮出来るだろう。
  • Configure Replace を実行すると running-config にロックがかかる。ロックをかけないというオプションもある。

Configuration Rollback

  • データベースにおけるトランザクションの考え方。
  • 単純に Configuration Replace を使ってやる場合
    1. チェックポイントの設定
      • "archive config" or "copy running-config "
    2. 何らかの設定変更
    3. 設定変更を取り消したければ、最初に取ったチェックポイントのコンフィグに巻き戻す。
      • "configure replace "
  • 時限 Rollbackを使う場合
    1. チェックポイントの設定
      • "archive config" or "copy running-config "
    2. トランザクション開始
      • "configure replace time "
    3. 何らかの設定変更
    4. 問題がなければ commit
      • "archive confirm"
    5. 設定変更を取り消したければ revert
      • "archive revert"
    6. 指定時刻以内に commit されなければ revert
  • 時限 rollback をかけると、カウントダウン中は新しい時限 rollback 設定がかけられなくなるので、運用としてはこちらの方が堅い。

Demo: 時限ロールバックの動作確認

確認/チェックポイント作成

core#archive config

core#sh archive
The maximum archive configurations allowed is 14.
There are currently 2 archive configurations saved.
The next archive file will be named flash:/archive/Router-<timestamp>-2
 Archive #  Name
   1        flash:/archive/Router.Nov-25-2009-00-58-53.931-0
   2        flash:/archive/RouterNov-25-2009-00-59-25.430-1 <- Most Recent
   3
   4
   5
   6
   7
   8
   9
   10
core#

時限ロールバック開始

core#configure replace flash:/archive/RouterNov-25-2009-00-59-25.430-1 time 10
Rollback Confirmed Change: Backing up current running config to flash:/archive/RouterNov-25-2009-01-01-10.740-2

This will apply all necessary additions and deletions
to replace the current running configuration with the
contents of the specified configuration file, which is
assumed to be a complete configuration, not a partial
configuration. Enter Y if you are sure you want to proceed. ? [no]: yes
Nov 25 2009 01:01:11.822: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_BACKUP: Backing up current running config to flash:/archive/RouterNov-25-2009-01-01-10.740-2
yes
Total number of passes: 0
Rollback Done

core#
2w6d: Rollback:Acquired Configuration lock.
Nov 25 2009 01:01:14.724: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_START_ABSTIMER: User: console: Scheduled to rollback to config flash:/archive/RouterNov-25-2009-01-01-10.740-2 in 10 minutes
core#

かぶせて時限ロールバックをしてみるとやれない。

core#configure replace flash:/archive/RouterNov-25-2009-00-56-58.638-10 time 10
%Rollback Confirmed Change is already activated on a config

core#

時限ロールバックのカウントダウン中に、単純に config replace してみるとやれるが、カウントダウン自体は続いている。カウントダウン中の replace は単なる設定変更と同じ扱いになると思ってよさそう。

core#configure replace flash:/archive/RouterNov-25-2009-00-56-58.638-10
This will apply all necessary additions and deletions
to replace the current running configuration with the
contents of the specified configuration file, which is
assumed to be a complete configuration, not a partial
configuration. Enter Y if you are sure you want to proceed. ? [no]: yes
Total number of passes: 0
Rollback Done

core#
2w6d: Rollback:Acquired Configuration lock.
core#show archive config rollback timer
Time configured(or reconfigured): 01:01:11 JST Wed Nov 25 2009
Timer type: absolute timer
Timer value: 10 min
User: console
URL of saved config file: flash:/archive/RouterNov-25-2009-01-01-10.740-2

core#

ここで一度仕切り直し。Fa1/0/24 の設定をクリアした上でチェックポイントを取る。

core#show archi
The maximum archive configurations allowed is 14.
There are currently 4 archive configurations saved.
The next archive file will be named flash:/archive/Router-<timestamp>-4
 Archive #  Name
   1        flash:/archive/Router.Nov-25-2009-00-58-53.931-0
   2        flash:/archive/RouterNov-25-2009-00-59-25.430-1
   3        flash:/archive/RouterNov-25-2009-01-01-10.740-2
   4        flash:/archive/RouterNov-25-2009-01-14-36.353-3 <- Most Recent
   5
   6
   7
   8
   9
   10
core#sh run int fa1/0/24
Building configuration...

Current configuration : 36 bytes
!
interface FastEthernet1/0/24
end

core#

時限ロールバック開始

core#configure replace flash:/archive/RouterNov-25-2009-01-14-36.353-3 time 10
Rollback Confirmed Change: Backing up current running config to flash:/archive/RouterNov-25-2009-01-15-39.125-4

This will apply all necessary additions and deletions
to replace the current running configuration with the
contents of the specified configuration file, which is
assumed to be a complete configuration, not a partial
configuration. Enter Y if you are sure you want to proceed. ? [no]: yes

Nov 25 2009 01:15:42.128: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_BACKUP: Backing up current running config to flash:/archive/RouterNov-25-2009-01-15-39.125-4
Total number of passes: 0
Rollback Done

core#
2w6d: Rollback:Acquired Configuration lock.
Nov 25 2009 01:15:45.022: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_START_ABSTIMER: User: console: Scheduled to rollback to config flash:/archive/RouterNov-25-2009-01-15-39.125-4 in 10 minutes
core#

Fa1/0/24に適当にIPを設定してみる。

core#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
core(config)#int fa1/0/24
core(config-if)#no switchport
core(config-if)#ip add 10.0.0.1
Nov 25 2009 01:16:13.065: %LINK-3-UPDOWN: Interface FastEthernet1/0/24, changed state to down
core(config-if)#ip add 10.0.0.1 255.255.255.0
core(config-if)#end
core#
Nov 25 2009 01:16:21.395: %SYS-5-CONFIG_I: Configured from console by console
core#sh run int fa1/0/24
Building configuration...

Current configuration : 86 bytes
!
interface FastEthernet1/0/24
 no switchport
 ip address 10.0.0.1 255.255.255.0
end

core#

まだカウントダウン中であることを確認。

core#sh archive config rollback timer
Time configured(or reconfigured): 01:15:42 JST Wed Nov 25 2009
Timer type: absolute timer
Timer value: 10 min
User: console
URL of saved config file: flash:/archive/RouterNov-25-2009-01-15-39.125-4

core#

実は設定したIPを間違えてた、とかで、変更内容を破棄(revert)する。

core#configure revert now
Rollback Confirmed Change: rolling to:flash:/archive/RouterNov-25-2009-01-15-39.125-4

Nov 25 2009 01:17:34.443: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_REVERTNOW: User: console: Rollback immediately.
Nov 25 2009 01:17:34.443: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_ROLLBACK_START: Start rolling to: flash:/archive/RouterNov-25-2009-01-15-39.125-4
2w6d: Rollback:Acquired Configuration lock.
Nov 25 2009 01:17:38.670: %LINK-3-UPDOWN: Interface FastEthernet1/0/24, changed state to down
!Pass 1
!
!List of Commands:
interface FastEthernet1/0/24
 default switchport
 no ip address 10.0.0.1 255.255.255.0
no ntp clock-period 36028643
ntp clock-period 36028642
end


Total number of passes: 1
Rollback Done

core#

設定が巻き戻ったことを確認。

core#sh run int fa1/0/24
Building configuration...

Current configuration : 36 bytes
!
interface FastEthernet1/0/24
end

core#

Replace なので、設定が削除されるというところ注意。

コマンド

  • configure replace list
    • "list" option を付けると、replace するときに設定差分を出してくれる。

*1:flash:configfile とか tftp://server/path/to/configfile とかのこと。

*2:"show archive command difference" : Contextual Config Diff