การ Rollback Configuration บน Cisco IOS XR

มาทำความเข้าใจการ Rollback บน IOS XR ไปพร้อม ๆ กัน

Nopnithi Khaokaew (Game)
4 min readNov 22, 2019

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — -

ฝากคอร์ส Python for Network Automation ผมด้วยครับ

— — — — — — — — — — — — — — — — — — — — — — — -

วันนี้เป็นวันแรก ๆ ของผมที่ได้มาจับ Cisco ASR 9000 เพราะก่อนหน้าที่ผมทำงานให้ network vendor เจ้าอื่นมาตลอด เนื่องด้วยต้องมีการ change configuration ก็เลยต้องศึกษาเรื่อง rollback ของมันสักหน่อยว่าทำยังไง

ก็แค่รัน IOS XRv ขึ้นมาใน lab แล้วเริ่มกันเลย…

การ Commit

เดี๋ยวผมจะลองใส่ description บน GigabitEthernet0/0/0/1 เป็น 11111

RP/0/0/CPU0:XRv(config)#int g0/0/0/1 description 11111
RP/0/0/CPU0:XRv(config)#show
Fri Nov 22 09:23:29.465 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
interface GigabitEthernet0/0/0/1
description 11111
!
end

ลองเช็ค config บน GigabitEthernet0/0/0/1 จะเห็นว่ายังไม่มีอะไรเปลี่ยน

RP/0/0/CPU0:XRv(config)#do sh run int g0/0/0/1
Fri Nov 22 09:26:30.153 UTC
interface GigabitEthernet0/0/0/1
shutdown
!

ทำการ commit พร้อมใส่ comment ลงไปด้วย

RP/0/0/CPU0:XRv(config)#commit comment add desc on g0/0/0/1    
Fri Nov 22 09:28:55.263 UTC

หลังจาก commit สังเกตว่า config ถูก apply บน router เรียบร้อย

RP/0/0/CPU0:XRv(config)#do sh run int g0/0/0/1
Fri Nov 22 09:29:43.500 UTC
interface GigabitEthernet0/0/0/1
description 11111
shutdown
!

ทีนี้เราลองมาดูว่า commit แต่ละครั้งของเรามีอะไรบ้าง

RP/0/0/CPU0:XRv#show configuration commit list 
Fri Nov 22 09:32:57.266 UTC
SNo. Label/ID User Line Client Time Stamp
~~~~ ~~~~~~~~ ~~~~ ~~~~ ~~~~~~ ~~~~~~~~~~
1 1000000002 nopnithi con0_0_CPU0 CLI Fri Nov 22 09:28:55 2019
2 1000000001 nopnithi con0_0_CPU0 CLI Fri Nov 22 09:22:15 2019

ถ้าเพิ่มคำว่า detail เข้าไปแบบนี้ มันจะเห็นรายละเอียดมากขึ้น เช่น user ไหน commit, commit เมื่อไหร่, ทำอะไร(ตาม comment ที่ใส่ไป) และอื่น ๆ

RP/0/0/CPU0:XRv#show configuration commit list detail 
Fri Nov 22 09:33:01.196 UTC
1) CommitId: 1000000002 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 09:28:55 2019
Comment: add desc on g0/0/0/1
2) CommitId: 1000000001 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 09:22:15 2019
Comment: change hostname to XRv

สมมุติผมอยากดูว่า commit id: 1000000002 มันมี config อะไรบ้าง ตามที่เห็นก็คือผมใส่ description ลงไปบน GigabitEthernet0/0/0/1 นั่นเอง

RP/0/0/CPU0:XRv#show configuration commit changes 1000000002
Fri Nov 22 09:44:10.160 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
interface GigabitEthernet0/0/0/1
description 11111
!
end

ลองดู commit id: 1000000001 บ้างซิว่าผมทำอะไร (ผมเปลี่ยน hostname เป็น XRv)

RP/0/0/CPU0:XRv#show configuration commit changes 1000000001
Fri Nov 22 09:49:07.930 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
hostname XRv
end

ไอ้ show configuration commit changes XXX เนี่ย ตรง XXX นอกจากใส่ commit id ลงไป มันก็ยังมี keyword อื่นให้เล่นอีก คือ

  1. all
  2. last
  3. since

จริง ๆ มันก็ตามความหมายนั่นแหละครับ ไปลองเล่นดู…ผมคงไม่โชว์ทั้งหมดนะครับ

RP/0/0/CPU0:XRv#show configuration commit changes ?               
all Display configurations committed for all commits
last Changes made in the most recent <n> commits
since Changes made since (and including) a specific commit
1000000002 Commit ID
1000000001 Commit ID

ตัวอย่างนะ ถ้าผมใส่เป็น last 2 คือโชว์ commit ล่าสุด 2 อัน ก็จะเห็นว่ามันมีทั้งเปลี่ยน hostname และเพิ่ม description บน interface

RP/0/0/CPU0:XRv#show configuration commit changes last 2
Fri Nov 22 09:51:57.688 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
hostname XRv
interface GigabitEthernet0/0/0/1
description 11111
!
end

การ Rollback

ในการ rollback มันก็จะใช้การ commit แต่ละครั้งเนี่ยแหละเป็น rollback point อย่าง command ด้านล่างนี้ ถ้าผมใส่ commit id ลงไปมันก็จะ rollback ให้ทันทีเลย

RP/0/0/CPU0:XRv#rollback configuration ?
last Rollback last <n> commits made
to Rollback up to (and including) a specific commit
to-exclude Rollback up to (and excluding) a specific commit
1000000002 Commit ID
1000000001 Commit ID

ถ้ายังจำได้ commit id: 1000000002 มันก็คือตอนที่ผมเปลี่ยน description บน GigabitEthernet0/0/0/1 ใช่มั้ยครับ ลองโชว์ให้ดูอีกทีละกัน

RP/0/0/CPU0:XRv#show configuration commit changes 1000000002
Fri Nov 22 10:03:38.370 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
interface GigabitEthernet0/0/0/1
description 11111
!
end

แต่ถ้าผมโชว์ command คล้าย ๆ ข้างบน แต่เปลี่ยนจาก commit เป็น rollback แทนหละ สังเกตบรรทัด “no description 11111” สิ มันก็คือ config เพื่อจะ rollback กลับนั่นเอง

RP/0/0/CPU0:XRv#show configuration rollback changes 1000000002
Fri Nov 22 10:05:43.862 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
interface GigabitEthernet0/0/0/1
no description 11111
!
end

ทีนี้ผมจะเปลี่ยน description เพิ่มอีกสัก 2 interfaces

RP/0/0/CPU0:XRv(config)#int g0/0/0/2 description 22222
RP/0/0/CPU0:XRv(config)#commit comment add desc on g0/0/0/2
Fri Nov 22 10:22:46.872 UTC
RP/0/0/CPU0:XRv(config)#int g0/0/0/3 description 33333
RP/0/0/CPU0:XRv(config)#commit comment add desc on g0/0/0/3
Fri Nov 22 10:22:57.811 UTC

ลองเช็ค commit ดู

RP/0/0/CPU0:XRv#show configuration commit list detail 
Fri Nov 22 10:23:18.519 UTC
1) CommitId: 1000000004 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 10:22:57 2019
Comment: add desc on g0/0/0/3
2) CommitId: 1000000003 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 10:22:46 2019
Comment: add desc on g0/0/0/2
3) CommitId: 1000000002 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 09:28:55 2019
Comment: add desc on g0/0/0/1
4) CommitId: 1000000001 Label: NONE
UserId: nopnithi Line: con0_0_CPU0
Client: CLI Time: Fri Nov 22 09:22:15 2019
Comment: change hostname to XRv

เดี๋ยวผมจะ rollback ตั้งแต่ 1000000003 เป็นต้นไป หมายความว่า config ของผมจะเหลือแค่ hostname XRv กับ description บน GigabitEthernet0/0/0/1 แค่นั้น

RP/0/0/CPU0:XRv#show configuration rollback changes to 1000000003
Fri Nov 22 10:27:57.140 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
interface GigabitEthernet0/0/0/2
no description 22222
!
interface GigabitEthernet0/0/0/3
no description 33333
!
end

เมื่อเช็คว่าเป็นไปตามที่ต้องการแล้วก็จัดไป…rollback โลด

RP/0/0/CPU0:XRv#rollback configuration to 1000000003
Fri Nov 22 10:28:38.628 UTC
Loading Rollback Changes.
Loaded Rollback Changes in 1 sec
Committing.
4 items committed in 1 sec (3)items/sec
Updating.
Updated Commit database in 1 sec
Configuration successfully rolled back to '1000000003'.

ลองเช็ค configuration ดู

RP/0/0/CPU0:XRv#show running-config 
Fri Nov 22 10:29:14.935 UTC
Building configuration...
!! IOS XR Configuration 6.1.3
!! Last configuration change at Fri Nov 22 10:28:39 2019 by nopnithi
!
hostname XRv
interface MgmtEth0/0/CPU0/0
shutdown
!
interface GigabitEthernet0/0/0/0
shutdown
!
interface GigabitEthernet0/0/0/1
description 11111
shutdown
!
interface GigabitEthernet0/0/0/2
shutdown
!
interface GigabitEthernet0/0/0/3
shutdown
!
interface GigabitEthernet0/0/0/4
shutdown
!
--More--

สรุป

  1. ถ้าจะ rollback ให้ใช้ command นี้
    => rollback configuration XXXXX
  2. แต่ก่อนจะ rollback แนะนำให้ใช้ command เหล่านี้เช็คดูก่อน
    => show configuration commit changes XXX
    => show configuration rollback changes XXX
  3. ไปลองเล่น keyword อย่าง all, last, since, to, to-exclude ให้ดี มีประโยชน์มาก

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.