🎓 レベル:標準 | 重要度:B(重要) 📎 前提:REST APIとJSON
要点(BLUF)
- 設定を手作業でなくコード(テキスト)で管理すれば、再現性・バージョン管理・レビューが効きます。これが**IaC(Infrastructure as Code)**の発想です。
- Ansibleは主に構成管理(機器の状態を望む形に揃える)、Terraformは主にインフラのプロビジョニング(リソースを宣言的に作る)に強みがあります。
- CCNA v1.1ではAI/MLがネットワーク運用に与える影響(異常検知・予測・自動最適化)が新たに範囲入りしました。
なぜ設定をコードにするのか
手作業の設定は、(1) 再現できない(誰かの記憶頼み)、(2) 履歴が残らない、(3) レビューできない、(4) 規模に追従できない、という弱点があります。設定をテキストのコードで表せば、Gitでバージョン管理し、差分をレビューし、同じ構成を何度でも再現できます。「サーバやネットワークを、ソフトウェアと同じ規律で扱う」のがIaCです。
Ansible と Terraform
v1.1ではPuppet/ChefからAnsible/Terraformへ範囲が更新されました。両者は重なりつつ重心が違います。
| Ansible | Terraform | |
|---|---|---|
| 主な用途 | 構成管理(既存機器を望む状態に) | プロビジョニング(リソースを作る) |
| 記述 | YAML(playbook) | HCL(宣言的) |
| 実行方式 | エージェントレス(SSH/API) | プロバイダ経由でAPI呼び出し |
| 状態管理 | 都度確認 | stateファイルで管理 |
| 押さえ | 手続き寄りにも書ける | 宣言的・あるべき姿を定義 |
graph LR CODE["設定コード(YAML / HCL)"] TOOL["Ansible / Terraform"] DEV["ネットワーク機器・クラウド(API経由)"] CODE --> TOOL --> DEV
Ansibleのplaybookの雰囲気(YAML):
- name: VLANを設定する
hosts: switches
tasks:
- name: VLAN10を作成
cisco.ios.ios_vlans:
config:
- vlan_id: 10
name: Sales
state: merged
宣言的アプローチ:何を、どうやって
- 手続き的(imperative):「VLANを作れ、IPを付けろ、IFを上げろ」と手順を書く。
- 宣言的(declarative):「最終状態はこうあるべき」と結果を書き、ツールが差分を埋める。
宣言的だと、既に望む状態なら何もしない(冪等性)ため、何度実行しても安全です。Terraformやansibleのmergedモードはこの考え方を取ります。
AIネットワーキング(v1.1の新規)
ネットワークが生む膨大なテレメトリ(ログ・統計)を、人手で監視するのは限界があります。AI/MLは:
- 異常検知:平常パターンを学習し、逸脱(攻撃・障害の予兆)を自動で見つける。
- 予測:トラフィック増加やキャパシティ枯渇を先読みする。
- 自動最適化・根本原因分析:無線チャネルの調整や、障害の原因候補の提示を支援する。
CiscoのAI支援機能(Catalyst Center等のアシュアランス)が代表例です。CCNAでは**「AI/MLが運用をどう変えるか」の概念**を押さえれば十分で、深い理論は機械学習分野へ繋ぎます。
なぜ自動化とAIが必須になったのか(設計の直観)
機器数・変更頻度・求められる速度が、人手のCLI運用の限界を超えました。自動化は「人を速くする」のではなく「人を構成のループから外す」ことで、ミスと遅延を根絶します。さらにAIは、人が見切れない量のデータから異常や予兆を拾い、運用を「事後対応」から「予測・予防」へ移します。CCNA v1.1がこのドメインの比重を上げたのは、ネットワーク技術者の仕事が設定屋から、自動化を設計しデータを読む役割へ移っている現実を反映しています。
⚠️ よくある誤解
- 「AnsibleとTerraformはどちらか一方」ではない。役割が違い、プロビジョニングはTerraform・構成管理はAnsibleと併用も普通です。
- 「IaCは大企業だけのもの」ではない。数台規模でも再現性とレビューの恩恵は大きく、小規模ほど属人化のリスクを下げられます。
- 「AIが技術者を不要にする」ではない。AIは監視・分析を支援しますが、設計・判断・自動化の構築は技術者の仕事として残ります(むしろ中心に)。
対応 lab
[[networking-study/labs/09-02_json_parse.py]]を参照(自動化のデータ形式JSONの実演)
関連
- データ形式の基礎:
[[09-02_REST_APIとJSON]]/集中管理:[[09-01_SDNとコントローラベース]] - 章ハブ:
[[09-00_ネットワーク自動化とプログラマビリティ_目次]]/AI/MLの理論は機械学習分野へ