Cisco IOSでConfigの世代管理をターミナルソフトでログ出力してローカル保存することから脱却したいと考え,AnsibleやNetconfなども考えたが今の現場では人力設定変更からの脱却がなかなかに難しい。(政治的にも運用的にもスキルセット的にも)
ということで,現行の環境をできるだけそのままに新しい機能では無いけど,「archive」コマンドで少しは幸せになれそうな気がしたので検証。
今回の検証環境はシンプルに,ルータ2台,FTPサーバ1台とする。
FTPサーバ(10.10.10.10)へConfigをアーカイブする |
「archive」コマンドはマニュアルでも実行でき,設定しておけば自動で指定した場所へConfigを保存してくれる。デフォルトでは10世代まで保存となっており,maximumオプションで1~14まで指定ができる。
図のR1とR2に以下定義を入れる。
! FTPの基本設定
ip ftp source-interface Ethernet0/0
ip ftp username user
ip ftp password Test123
! アーカイブ設定
archive
path ftp://10.10.10.10/$h # $h は機器のホスト名
write-memory # 設定保存時にアーカイブ実行
time-period 3 # アーカイブを実行するタイミングの指定。今回は検証なので3分とした。
設定保存時と定期的にアーカイブをする設定を入れたが,time-periodはアーカイブをしたタイミングを起点に何分後という説明だったので,自動と手動のどちらも見るのか気になり確認をしたところ,archiveを設定した時点から定期的に取得するらしく,「archive config」コマンドで手動で実行したアーカイブは無視されていた。
R1#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named ftp://10.10.10.10/R1--9
Archive # Name
1 ftp://10.10.10.10/R1-Apr-30-14-27-36.582-0
2 ftp://10.10.10.10/R1-Apr-30-14-28-49.035-1 # archiveコマンド設定後,最初の自動アーカイブ
3 ftp://10.10.10.10/R1-Apr-30-14-31-50.160-2 # 初回から3分後,2回目のアーカイブ
4 ftp://10.10.10.10/R1-Apr-30-14-34-51.091-3 # 3回目の自動アーカイブ
5 ftp://10.10.10.10/R1-Apr-30-14-34-59.006-4 # 「archive config」コマンドで手動でアーカイブを実行
6 ftp://10.10.10.10/R1-Apr-30-14-35-09.006-5 # 「archive config」コマンドで手動でアーカイブを実行
7 ftp://10.10.10.10/R1-Apr-30-14-37-52.197-6 # 4回目の自動アーカイブ
8 ftp://10.10.10.10/R1-Apr-30-14-39-17.723-7 # 「archive config」コマンドで手動でアーカイブを実行
9 ftp://10.10.10.10/R1-Apr-30-14-40-53.180-8 < -- Most Recent
この構成にすることでアーカイブと対となるロールバックも可能になる。
例えば,LAN側インタフェースの設定を入れたあと,誤って設定を消してしまった場合,「configure replace」コマンドでロールバックを行うことができる。
R1#show ip
*Apr 30 14:51:51.064: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up
*Apr 30 14:51:52.072: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up
R1#show ip int brie
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 10.10.10.1 YES manual up up
Ethernet0/1 192.168.1.1 YES manual up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
R1#
R1#copy run startup-config
Destination filename [startup-config]?
Building configuration...
[OK]
Writing R1-Apr-30-14-51-57.355-12
R1#
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#default interface e0/1 #やっちまった!!!
Interface Ethernet0/1 set to default configuration
R1(config)#do show ip int brie
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 10.10.10.1 YES manual up up
Ethernet0/1 unassigned YES TFTP up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
手動で簡単に戻せるレベルだが,せっかくアーカイブをとっているので一つ前の設定へロールバックする。
R1#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named ftp://10.10.10.10/R1-<timestamp>-15
Archive # Name
1 ftp://10.10.10.10/R1-Apr-30-14-35-09.006-5
2 ftp://10.10.10.10/R1-Apr-30-14-37-52.197-6
3 ftp://10.10.10.10/R1-Apr-30-14-39-17.723-7
4 ftp://10.10.10.10/R1-Apr-30-14-40-53.180-8
5 ftp://10.10.10.10/R1-Apr-30-14-43-54.061-9
6 ftp://10.10.10.10/R1-Apr-30-14-46-54.980-10
7 ftp://10.10.10.10/R1-Apr-30-14-49-56.023-11
8 ftp://10.10.10.10/R1-Apr-30-14-51-57.355-12
9 ftp://10.10.10.10/R1-Apr-30-14-52-56.856-13
10 ftp://10.10.10.10/R1-Apr-30-14-55-58.039-14 <- Most Recent
一つ前は「ftp://10.10.10.10/R1-Apr-30-14-52-56.856-13」なので,これを指定してロールバックを実行する。
R1#configure replace ftp://10.10.10.10/R1-Apr-30-14-52-56.856-13
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
Loading R1-Apr-30-14-52-56.856-13 !
[OK - 1106/4096 bytes]
Loading R1-Apr-30-14-52-56.856-13 !
[OK - 1106/4096 bytes]
Total number of passes: 1
Rollback Done
R1#
*Apr 30 15:00:31.984: Rollback:Acquired Configuration lock.
R1#show ip int brie
Interface IP-Address OK? Method Status Protocol
Ethernet0/0 10.10.10.1 YES manual up up
Ethernet0/1 192.168.1.1 YES TFTP up up
Ethernet0/2 unassigned YES unset administratively down down
Ethernet0/3 unassigned YES unset administratively down down
R1#show arc
R1#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named ftp://10.10.10.10/R1-<timestamp>-16
Archive # Name
1 ftp://10.10.10.10/R1-Apr-30-14-37-52.197-6
2 ftp://10.10.10.10/R1-Apr-30-14-39-17.723-7
3 ftp://10.10.10.10/R1-Apr-30-14-40-53.180-8
4 ftp://10.10.10.10/R1-Apr-30-14-43-54.061-9
5 ftp://10.10.10.10/R1-Apr-30-14-46-54.980-10
6 ftp://10.10.10.10/R1-Apr-30-14-49-56.023-11
7 ftp://10.10.10.10/R1-Apr-30-14-51-57.355-12
8 ftp://10.10.10.10/R1-Apr-30-14-52-56.856-13
9 ftp://10.10.10.10/R1-Apr-30-14-55-58.039-14
10 ftp://10.10.10.10/R1-Apr-30-14-58-59.227-15 <- Most Recent
R1#
無事に設定はもどり,アーカイブ番号は戻るのではなく更新される。
いちいちどの定義を入れ直さなくてはダメなのか,という確認が不要なので便利だと思うし,運用に入った環境では人的ミスの削減にもつながるはず。
ちなみにアーカイブの差分も以下コマンドで確認できる。
R11#$R11-Apr-30-15-25-28.087-24 ftp://10.10.10.10/R1-Apr-30-15-23-03.315-23
Loading R11-Apr-30-15-25-28.087-24 !
[OK - 1106/4096 bytes]
Loading R1-Apr-30-15-23-03.315-23 !
[OK - 1105/4096 bytes]
!Contextual Config Diffs:
+hostname R1
-hostname R11
なお,FTPサーバ側にもちゃんとファイルが保存されている。
[user@localhost ~]$ ls -lrt
合計 128
-rw-r--r--. 1 user user 1093 4月 30 10:27 R1-Apr-30-14-27-36.582-0
-rw-r--r--. 1 user user 1073 4月 30 10:28 R2-Apr-30-14-28-22.973-1
-rw-r--r--. 1 user user 1093 4月 30 10:28 R1-Apr-30-14-28-49.035-1
-rw-r--r--. 1 user user 1073 4月 30 10:29 R2-Apr-30-14-29-06.901-2
-rw-r--r--. 1 user user 1093 4月 30 10:31 R1-Apr-30-14-31-50.160-2
-rw-r--r--. 1 user user 1073 4月 30 10:32 R2-Apr-30-14-32-08.023-3
-rw-r--r--. 1 user user 1093 4月 30 10:34 R1-Apr-30-14-34-51.091-3
-rw-r--r--. 1 user user 1093 4月 30 10:34 R1-Apr-30-14-34-59.006-4
-rw-r--r--. 1 user user 1093 4月 30 10:35 R1-Apr-30-14-35-09.006-5
-rw-r--r--. 1 user user 1073 4月 30 10:35 R2-Apr-30-14-35-08.939-4
-rw-r--r--. 1 user user 1093 4月 30 10:37 R1-Apr-30-14-37-52.197-6
-rw-r--r--. 1 user user 1073 4月 30 10:38 R2-Apr-30-14-38-09.972-5
-rw-r--r--. 1 user user 1093 4月 30 10:39 R1-Apr-30-14-39-17.723-7
-rw-r--r--. 1 user user 1093 4月 30 10:40 R1-Apr-30-14-40-53.180-8
-rw-r--r--. 1 user user 1073 4月 30 10:41 R2-Apr-30-14-41-10.819-6
-rw-r--r--. 1 user user 1093 4月 30 10:43 R1-Apr-30-14-43-54.061-9
-rw-r--r--. 1 user user 1073 4月 30 10:44 R2-Apr-30-14-44-10.959-7
-rw-r--r--. 1 user user 1093 4月 30 10:46 R1-Apr-30-14-46-54.980-10
-rw-r--r--. 1 user user 1073 4月 30 10:47 R2-Apr-30-14-47-11.101-8
-rw-r--r--. 1 user user 1093 4月 30 10:49 R1-Apr-30-14-49-56.023-11
-rw-r--r--. 1 user user 1073 4月 30 10:50 R2-Apr-30-14-50-11.460-9
-rw-r--r--. 1 user user 1106 4月 30 10:51 R1-Apr-30-14-51-57.355-12
-rw-r--r--. 1 user user 1106 4月 30 10:52 R1-Apr-30-14-52-56.856-13
-rw-r--r--. 1 user user 1073 4月 30 10:53 R2-Apr-30-14-53-11.594-10
-rw-r--r--. 1 user user 1083 4月 30 10:55 R1-Apr-30-14-55-58.039-14
-rw-r--r--. 1 user user 1073 4月 30 10:56 R2-Apr-30-14-56-11.761-11
-rw-r--r--. 1 user user 1083 4月 30 10:58 R1-Apr-30-14-58-59.227-15
-rw-r--r--. 1 user user 1073 4月 30 10:59 R2-Apr-30-14-59-11.901-12
-rw-r--r--. 1 user user 1105 4月 30 11:02 R1-Apr-30-15-02-00.102-16
-rw-r--r--. 1 user user 1073 4月 30 11:02 R2-Apr-30-15-02-12.252-13
-rw-r--r--. 1 user user 1105 4月 30 11:05 R1-Apr-30-15-05-00.981-17
-rw-r--r--. 1 user user 1073 4月 30 11:05 R2-Apr-30-15-05-12.392-14