ITの教科書検索
入門・発展ページ読了 約11分

ネットワーク自動化とは ― REST APIとJSON入門

ネットワーク自動化とは、1台ずつCLIで行っていた設定や確認を、プログラムに実行させることです。REST APIのCRUDとHTTPメソッド、JSONの読み方、構成管理ツールを例で確かめます。

目次
  1. ネットワーク自動化とは
  2. 従来型とコントローラ型・自動化の違い
  3. REST APIの特徴:CRUDとHTTPメソッド
  4. JSONの読み方
  5. 構成管理ツールの役割
  6. 練習問題

ネットワーク自動化とは、プログラムに設定作業を任せること

ネットワーク自動化とは、担当者がコマンド画面(CLI)で1台ずつ行っていた設定・確認の作業を、プログラムがAPIやSSHで機器に実行させることです。自動化によく使う手段が、REST API・JSON・構成管理ツールです。

機器が数十台、数百台と増えると、1台ずつの手作業では時間がかかり、設定の誤りも増えます。プログラムに任せれば、同じ設定を全台に同じ手順で入れられます。

自動化の対象は、ネットワーク機器のCLIだけではありません。SDNの記事で説明したコントローラも、自動化ツールがノースバウンドAPIで操作します。REST APIで使うHTTPメソッドの基本は、HTTPとHTTPSの記事で説明しています。

従来型とコントローラ型・自動化で、操作の経路がどう変わるか

従来型の運用では、担当者が機器1台ごとにSSHでログインし、CLIで設定を入力します。機器が増えるほど、同じような入力を繰り返す回数も増えます。入力する人や日によって、細かい書き方が違ってくることもあります。

コントローラ型・自動化の運用では、担当者はAPIを使ってコントローラや自動化ツールに1回だけ指示を出します。各機器への配布は、コントローラや自動化ツールが受け持ちます。同じ指示を複数台へ同じ手順で適用できるので、人によるばらつきを減らせます。

従来型担当者スイッチAスイッチBスイッチCCLIで個別に入力CLIで個別に入力CLIで個別に入力コントローラ型・自動化担当者API呼び出し自動化ツール(コントローラ)スイッチAスイッチBスイッチC一括で配布一括で配布一括で配布
従来型は、担当者がスイッチ1台ごとにSSHでログインし、CLIで同じような設定を繰り返し入力します。コントローラ型・自動化では、担当者はAPIで自動化ツール(コントローラ)に1回だけ指示を出し、そこから複数台のスイッチへ設定がまとめて配布されます。

図の自動化ツールの位置には、SDNの記事で説明したSDNコントローラが入ることもあります。拠点の機器をコントローラからまとめて設定する例には、SD-WANもあります。一方、コントローラを置かず、自動化ツールが機器のAPIやSSHへ直接指示する構成もあります。

REST APIの特徴:CRUD操作とHTTPメソッドの対応

REST APIとは、HTTPメソッドとURIを使って、サーバ側のデータや設定を操作する仕組みです。ネットワーク機器やコントローラの多くは、このREST APIで外部からの操作を受け付けます。APIという言葉の意味や、複数のWeb APIを組み合わせるマッシュアップは、APIの記事にまとめています。

データの基本的な操作である作成・読み取り・更新・削除を、英語の頭文字をとってCRUD(Create・Read・Update・Delete)と呼びます。REST APIでは、この4つの操作にHTTPメソッドを対応させます。

HTTPメソッド対応するCRUD操作機器の操作での例
GETRead(読み取り)インターフェースの一覧や状態を取得する
POSTCreate(作成)新しいVLANなど、新しい設定を作る
PUTUpdate(更新)既存の設定を、丸ごと新しい内容に置き換える
PATCHUpdate(更新)既存の設定の一部だけを書き換える
DELETEDelete(削除)不要になったVLANなどの設定を消す

更新に使うメソッドは2つあります。PUTは設定全体を置き換え、PATCHは一部だけを書き換えます。

どのメソッドでも、操作したい対象はURIで指定します。Webページの読み込みで使うGETやPOSTと同じメソッドですが、ここでは機器の設定そのものが操作の対象になります。

自動化ツールネットワーク機器PATCHで要求PATCH /interfaces/Gi0/1{ "vlan": 20 }200 OKで応答{ "result": "ok" }
自動化ツールは、変更したい内容をHTTPメソッドとJSONの本文にして機器へ送ります。機器は、処理の結果をステータスコードとJSONの本文で返します。この例は、インターフェースGi0/1にVLAN20だけを設定するPATCHリクエストと、成功を示す200 OKの応答です。

設定を作ったり変えたりするリクエストでは、変更したい内容をJSONの本文として添えます。レスポンスには、処理の成否を示すステータスコードと、結果を示すJSONの本文が入ります。200番台のステータスコードは成功、400番台はリクエスト側の誤り、500番台はサーバ側の処理の失敗を表します。

REST APIには誰でもアクセスできるわけではありません。APIキー・トークン・IDとパスワードなどの認証で、正しい相手からの要求かを確かめます。パスワードを渡さずに、範囲と期限を決めた権限をアプリに渡すトークンの仕組みは、OAuthの記事で説明しています。データの形式には、次に説明するJSONのほか、XMLを使うこともあります。

REST APIのサーバは、前に受けたリクエストの内容を記憶しません。そのため、クライアントは認証の情報などをリクエストのたびに送ります。この性質をステートレスと呼びます。

JSONの読み方:キーと値、配列、入れ子

JSONとは、キーと値の組でデータを表す記述形式です。JavaScript Object Notationの略で、仕様はRFC 8259にまとまっています。REST APIの本文によく使われます。

次の例は、機器のポート(インターフェース)の設定を表すJSONです。行をクリックすると、その行の説明が開きます。

インターフェースの設定を表すJSON

行をクリックすると、その行の意味が開きます。

JSONの値には、文字列・数値・真偽値・配列・オブジェクト・nullの6種類があります。このうち配列とオブジェクトは、中にさらに値を入れられます。RFC 8259は入れ子の深さの上限を定めていませんが、受け取る側のプログラムが上限を設けることは認めています。

同じ内容を、XMLという別の記述形式で書くと、次のようになります。

XMLでの表現JSONと同じ内容
<interface>
  <name>GigabitEthernet0/1</name>
  <enabled>true</enabled>
  <vlan>20</vlan>
  <ip_addresses>
    <ip_address>192.168.10.1</ip_address>
  </ip_addresses>
  <status>
    <admin>up</admin>
    <oper>up</oper>
  </status>
</interface>

XMLでは、値を開始タグと終了タグで囲みます。配列にあたる部分は、ip_addressタグを要素の数だけ繰り返します。JSONは波かっこ・角かっこ・引用符といった短い記号で同じ構造を表すので、この例のように同じデータでも文字数が少なくなります。

構成管理ツールの役割:Ansible・Puppet・Chef・Terraform

構成管理ツールとは、複数の機器やサーバの設定を、ファイルに書いた定義から一括で反映するツールです。担当者はREST APIを直接呼び出す代わりに、これらのツールへ定義を渡します。クラウドのサーバやネットワークをファイルの定義から作る考え方は、IaCの記事で解説しています。

ツールエージェントの要否設定の書き方
Ansible不要。SSHなど既存の接続手段で操作するYAMLのPlaybookに、実行するタスクを順に書く
Puppet必要。管理対象にPuppet agentを入れる構成が基本独自のDSLで、あるべき状態を書く
Chef必要。管理対象にchef-clientを入れる構成が基本RubyベースのDSLでレシピ・クックブックを書く
Terraform不要。外部からAPIで操作するHCLで、あるべき状態を書く

AnsibleとTerraformは、エージェントと呼ぶ専用ソフトを管理対象に入れず、APIやSSHで操作します。PuppetとChefは、管理対象にエージェントを入れる構成が基本です。記述方式も、YAML・独自の記述言語(DSL)・Ruby・HCLとツールごとに違います。どのツールを選ぶかは、対象のシステムや組織の運用方針によって変わります。

練習問題(全5問)

Q1自動化がネットワーク管理に与える影響として正しいものは?
Q2従来型のネットワーク管理と比べた、コントローラ型・自動化の特徴として正しいものは?
Q3REST APIで、既存のリソースを丸ごと新しい内容に置き換えたいときに使うHTTPメソッドは?
Q4JSONで、角かっこ([ ])を使って表すデータ構造はどれか?
Q5Ansibleの特徴として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す