コンテンツにスキップ

設定変更の選び方

SONiC には設定変更の入口が複数あります。選び方の軸は「変更範囲」「停止影響」「検証と rollback が必要か」「永続化するか」です。小さな手作業なら config CLI、全体構成ファイルの再投入なら config reload、低停止で構造化変更したいなら config replace / config apply-patch を優先して検討します。

まず判断すること

やりたいこと 入口 理由
現在の設定を保存する config save running CONFIG_DB/etc/sonic/config_db.json へ dump する
ファイルの設定を merge する config load 既存エントリを消さずに書き足す
ファイルの設定で入れ替える config reload CONFIG_DB をクリアして再ロードし、必要な service restart を伴う
全体 config の差分だけ当てる config replace target config との差分を JSON Patch 化し、GCU 経由で適用する
増分変更を明示的に当てる config apply-patch RFC 6902 JSON Patch を validation / ordering / rollback 前提で適用する
DB dump やテンプレート生成をする sonic-cfggen CONFIG_DB、minigraph、YANG JSON、Jinja2 を扱う汎用エンジン

config loadconfig reload は特に混同しやすい入口です。load は merge なので、ファイルから消した設定が DB に残る可能性があります。クリーンな全体入れ替えが必要なら reload、停止影響を抑えて差分だけ当てたいなら replace を検討します。

GCU を使う場面

Generic Config Update / Rollback は、config reload を避けて running CONFIG_DB に増分パッチを安全に当てる仕組みです。入力は JSON Patch、適用前に YANG validation を行い、依存関係を考慮して適用順を決めます。失敗時は rollback し、任意の checkpoint へ戻す操作も扱います。

flowchart LR
  CHK[config checkpoint] --> PATCH[config apply-patch / replace]
  PATCH --> VAL[YANG validation]
  VAL --> SORT[patch ordering]
  SORT --> APPLY[CONFIG_DB apply]
  APPLY --> OK{success?}
  OK -->|yes| SAVE[必要なら config save]
  OK -->|no| RB[auto rollback / config rollback]

GCU を使う典型例は、VLAN / ACL / BGP など複数テーブルにまたがる変更を、依存順序を壊さずに入れたい場合です。特に dynamic port breakout のように PORTVLAN_MEMBERACL_TABLE などの参照関係が絡む変更では、JSON Patch ordering の考え方が効きます。

JSON Patch と JsonChange の違い

JSON Patch はユーザが投入する操作列です。一方、内部の JsonChange は「最終状態へ近づけるために、同時に適用してよい変更単位」です。JSON Change Application は、table 単位の書き込み、必要な service restart、反映確認、最終 diff 検証を担当します。つまり、ユーザは JSON Patch を書き、GCU がそれを安全な適用単位へ分割・整列し、applier が DB と service に反映します。

config reload を使うとき

config reload は強い操作です。CONFIG_DB をクリアしてファイルを再ロードし、service restart を伴います。現行設計では config reload enhancement により、FEATURE.delayedPortInitDone を使って非クリティカル service の起動を遅らせる event-driven 化が入っています。それでも reload はデータプレーンや制御プレーンの影響が大きいため、事前に config save、対象ファイル、maintenance window、rollback 手順を確認して使います。

sonic-cfggen の位置づけ

sonic-cfggen は設定生成エンジンです。CONFIG_DB を JSON として dump する、Jinja2 テンプレートを描画する、minigraph や YANG JSON を変換する、生成した dict を CONFIG_DB へ書く、といった低レベルな作業を担います。運用者が常用するというより、config / show の裏側や起動時スクリプト、自動化で使われる道具として読むと位置づけがはっきりします。

関連ページ