はじめに
本記事は、NSO の commit のフラグのひとつ、no-overwrite について説明します。commit フラグ、no-overwrite はデバイスと NSO との間に差分があるとき、対象のコンフィグが同期していれば、NSOからのコンフィグの設定を許容します。
設定したいコンフィグが対立しないケース
通常、NSO とデバイス間に差分がある状態ではトランザクションを commit することはできません。但し、サービス開発の段階で複数のサービスが混在するケースや、デバイスで既に設定されたコンフィグある場合 (brown-field) においては NSO とデバイスに差分 (conflict) が常時、または高頻度にあることが想定されます。このようなケースでは、変更したい対象のコンフィグが in-sync の状態であれば、そのコンフィグを変更できるようになれば便利です。但し、no-out-of-sync-check 同様、last-transaction-id は unknown となるので、後で sync-from 等を実行し transaction-id を更新する必要があります。
ios0 は out-of-sync の状態です。
admin@ncs# devices device ios0 check-sync
result out-of-sync
info got: b664a18fd2bb2b230e8b991957743dec expected: d3b4dfca356db6cc12be6485baf862e8
admin@ncs# *** ALARM out-of-sync: got: b664a18fd2bb2b230e8b991957743dec expected: d3b4dfca356db6cc12be6485baf862e8
この状態で、description を変更します。
admin@ncs# show running-config devices device ios0 config interface Loopback 100
devices device ios0
config
interface Loopback100
description write-from-device
ip address 10.100.1.1 255.255.255.255
no shutdown
exit
!
!
commit は out-of-sync のため失敗します。
admin@ncs(config)# devices device ios0 config interface Loopback 100
admin@ncs(config-if)# description write-from-NSO
admin@ncs(config-if)# commit dry-run
cli {
local-node {
data devices {
device ios0 {
config {
interface {
Loopback 100 {
- description write-from-device;
+ description write-from-NSO;
}
}
}
}
}
}
}
admin@ncs(config-if)# commit
Aborted: Network Element Driver: device ios0: out of sync
commit no-overwrite フラグでコミットします。
: device ios0: out of sync
admin@ncs(config-if)# commit no-overwrite
Commit complete.
admin@ncs(config-if)# end
admin@ncs# show running-config devices device ios0 config interface Loopback 100
devices device ios0
config
interface Loopback100
description write-from-NSO
ip address 10.100.1.1 255.255.255.255
no shutdown
exit
!
!
admin@ncs#
設定したいコンフィグが対立する (out-of-sync) ケース
変更したいコンフィグが対立 ( out-of-sync ) の状態で試してみます。
admin@ncs# show running-config devices device ios0 config interface Loopback 100
devices device ios0
config
interface Loopback100
description write-from-NSO
ip address 10.100.1.1 255.255.255.255
no shutdown
exit
!
!
admin@ncs# devices device ios0 compare-config
diff
devices {
device ios0 {
config {
interface {
Loopback 100 {
- description write-from-NSO;
+ description write-from-device-again;
}
}
}
}
}
フラグを付けても commit は失敗します。
admin@ncs# config
Entering configuration mode terminal
admin@ncs(config)# devices device ios0 config interface Loopback 100
admin@ncs(config-if)# description write-from-NSO-again
admin@ncs(config-if)# commit
Aborted: Network Element Driver: device ios0: out of sync
admin@ncs(config-if)# commit no-overwrite
Aborted: Network Element Driver: device ios0: out of sync: for 'devices device ios0 config interface Loopback 100 description'
admin@ncs(config-if)#
参考情報
https://developer.cisco.com/docs/nso/guides/#!life-cycle-operations-manipulating-existing-services-and-devices/commit-flags