以前に Cisco ACI でコンフィグの定期バックアップ設定をするというメモを書きました。 この記事では Remote Location
へのアクセス時にパスワード認証することを前提にしていたのですが、今回は鍵交換方式で認証する場合の設定例をメモします。 尚、ACI 4.2(2e) で動作確認しました。 詳細は後述しますが Remote Location
の新規作成時は SSH Key Passphrase
が任意であるにも関わらず、設定変更時は必須になっているように見えました…
1. Remote Location の設定
Step.1-1
Admin
→ Import/Export
→ Remote Locations
→ Create Remote Location
をクリックします。
Step.1-2
Craete Remote Location
ウインドウが表示されます。 今回は SCP を鍵交換方式で設定するので Protocol
には scp
、Authentication Type
には Use SSH Public/Private Files
を選択します。 すると、設定可能項目は以下のようになるはずです (SSH Key Contents
欄などが表示されるはずです)。
Step.1-3
パラメータを任意で指定します。 Remote Path
にはコンフィグをインポートまたはエクスポートしたいディレクトリを指定します。 この値は /
で終わっても、終わらなくても、いずれにしてもディレクトリとして扱われるようです。 SSH Key Contentns
には秘密鍵を指定します。 秘密鍵を一度保存すると、GUI 上からは「秘密鍵が保存されている」ことは分かるものの、秘密鍵のオリジナルフレーズは見えないようになるようなので、「同じ admin
でログインした別ユーザに秘密鍵を盗まれてしまう」ということは無さそうです。
2. Export Policy の設定
Step.2-1
Remote Location
の設定が終わったら、次は Export Policy
を設定します。 Admin
→ Import/Export
→ Export Policies
→ Configuration
→ Policy
→ Create Configuration Export Policy
をクリックします。
Step.2-2
Create Configuration Export Policy
ウインドウが表示されます。
パラメータを任意で指定します。 Format
は json
でも xml
でも (自身の運用に併せた) お好みで良いと思いますが、Cisco のサンプルでは json を使ったケースが多いように思いますので、こだわりが無ければ json
で良いかも知れません。 Snapshot
にチェックを入れると Remote Location
は使わず、APIC 内部にコンフィグを保存しますので、今回はチェックしません。 コンフィグを定期的に自動バックアップさせるのであれば Scheduler
にスケジュールを設定します。 ACI 初期状態で「1:00, 9:00, 17:00」に実行される EveryEightHour
というスケジュール設定があるので、今回はこれを設定しました。 尚、スケジューラ設定は空欄にしておき、定期実行はさせず、次ステップで紹介する「手動コンフィグ取得用設定」にしておくことも可能です。
Step.2-3
Scheduler
設定が存在していても空欄であっても、Export Policy
の Start Now
を Now
に設定して Submit
すると、すぐに定義した Export Policy
が実行されます。 「定期実行はさせないが、作業の直前・直後にコンフィグをバックアップしたい」等は Export Destination
は作業用 PC に設定され、Scheduler
設定が空欄の Export Policy
を作っておいても良いかも知れません。 尚、Start Now
を Yes
にして Submit
し、即時コンフィグバックアップを取得すると Start Now
設定は No
に戻ります。 再び「すぐにコンフィグバックアップを取得したい」場合は都度、Start Now
を Yes
にして Submit
する必要があります。
3. 鍵交換方式で設定した Remote Location の変更時は SSH Key Passphrase 指定が必須?
Remote Locatoin
を設定する場合、Admin
→ Import/Export
→ Remote Locations
→ [RemoteLocation]
→ Policy
→ Change Remote Path
をクリックします。
Change Remote Location
ウインドウが表示されます。 新規に Remote Location
を設定する場合は SSH Key Passphrase
が必須では無かったので空欄に出来たのですが、なぜか設定変更時は必須扱いとされてしまい、空欄のまま Submit
することが出来ません…
Remote Location
の設定を CLI から確認すると以下のように表示されます。なぜか path
や user
設定の前に #
が表示されており、まるでコメントのように見えます…
remote path backup-server
mgmt-epg out-of-band default
# path scp 192.168.1.1 port 22 remote-directory /root/aci-backup/
# user root
exit
CLI で設定可能なコマンド候補を確認すると以下のように表示されます。 path
や user
は指定できるのですが、認証方式の設定変更や秘密鍵の変更は出来ないように見えます。
apic(config-remote)# ?
description Configure remote path description
mgmt-epg Select remote path management EPG
no Negate a command or set its defaults
path Configure remote path properties
user Set the remote path user name and password
bash Bash shell for unix commands
end Exit to the exec mode
exit Exit from current mode
export-config Export Configuration
fabric Show fabric related information
import-config Import Configuration
show Show running system information
terminal Enable or disable pager for command output
try Show deployment related changes
usage Show deployment usage
where Show the current mode
REST API で取得したコンフィグは以下でした。 AuthType
設定があり、認証方式を指定出来そうに見えますが、秘密鍵自体は別の DN に保存されているのか、ここでは保存されていないように見えました。
{
"totalCount": "1",
"imdata": [
{
"fileRemotePath": {
"attributes": {
"annotation": "",
"authType": "useSshKeyContents",
"descr": "",
"dn": "uni/fabric/path-backup-server",
"host": "192.168.1.1",
"name": "backup-server",
"nameAlias": "",
"protocol": "scp",
"remotePath": "/var/aci-backup/",
"remotePort": "22",
"userName": "admin"
},
"children": [
{
"fileRsARemoteHostToEpg": {
"attributes": {
"annotation": "",
"tDn": "uni/tn-mgmt/mgmtp-default/oob-default"
}
}
}
]
}
}
]
}
コメント