構成管理ツール
ネットワーク上のサーバなどに対して、アプリケーションの自動インストールや設定の自動化を行うツールを構成管理ツールと呼びます。
代表的な構成管理ツール
- Ansible
- リモードデバイス通信にSSHを使用します。
- Puppet
- Chef
| 比較項目 | Ansible | Puppet | Chef |
|---|---|---|---|
| 開発組織 | RedHat | Puppet Labs | Chef Software |
| 使用言語 | Python | Ruby | Ruby |
| アーキテクチャ | エージェントレス | エージェント | エージェント |
| 構成管理方法 | Push型通信 | Pull型通信 | Pull型通信 |
| 制御ファイル | playbook ({プレイ{タスク) | manifest | Recipe |
| コード記述言語 | YAML | 独自言語 | Ruby |
| 使用プロトコル | SSH/NETCONF | HTTP/HTTPS | HTTP/HTTPS |
| サーバ側待ち受けポート | – | TCP 8140 | TCP 10002 |

自動管理
ネットワークの自動化によるメリットとして次の2つを挙げています。
- デバイス構成の自動化…デバイス構成の設定を自動化することで、設定ミスを減らせるメリットがあります。
- デバイスのソフトウェアの管理…デバイス管理の作業負荷を軽減することができます。

REST API
REST(REpresentational State Transfer)とは、URLでデバイスを指定し、デバイスの設定や情報収集を行うための仕組みのことです。プロトコルはHTTPまたはHTTPSを使用します。
- REST APIが対応しているデータフォーマットはJSON形式とXML形式
- ステートレスなクライアント/サーバプロトコル
- 階層構造



HTTPリクエスト
データに対する基本処理のことを、CRUD(クラッド)といいます。
| リクエストメソッド | 動作 | CRUD |
|---|---|---|
| POST | 新規作成 | C(Create) |
| GET | 読み出し | R(Read) |
| PUT | 更新(置き換え) | U(Update/Replace) |
| PATCH | 更新(一部変更) | U(Update/Modify) |
| DELETE | 削除 | D(Delete) |
HTTPリクエストヘッダ
| Accept | text/html、application/json | クライアントが理解できるコンテンツタイプ |
| Accept-Encoding | gzip、deflate、br | クライアントがサポートする圧縮形式 |
| Accept-Language | ja、en-US | クライアントが理解できる自然言語 |
HTTPレスポンスヘッダ
| content-encoding | br | サーバが応答に使用した圧縮形式 |
| content-type | text/html | サーバが応答に使用したコンテンツタイプ |
HTTPステータスコード
| クラス | 意味 |
|---|---|
| 情報レスポンス | リクエストを受理し、処理を継続している 100:現時点まで問題はなく、クライアントはリクエストを継続できる |
| 成功レスポンス | リクエストを理解し、処理された 200:リクエストが成功した |
| リダイレクト | 要求されたリソースの代わりに新しいリソースを使用した 301:リクエストしたリソースが恒久的に移動した |
| クライアントエラー | クライアントが送信したリクエストに問題があった 404:リクエストしたリソースが見つからない |
| サーバエラー | サーバ上のエラーでリクエストの処理に失敗した 500:サーバの内部でエラーが発生した |

URI
URIとは、リソースを識別する名前の統一された書式です。HTTPでは、リクエストするリソースをURIで指定します。
(使用するプロトコル)://(APIを提供するホスト名、IPアドレス)/(APIのリソース名)/(APIに渡すパラメータ)
JSON
JSON(JavaScript Object Notation)は、テキスト形式(他にはXML、CSV)のデータフォーマットの一つです。
人間にもプログラムにも扱いやすいフォーマットのため、コントローラとプログラムの間の通信(NBI)で使われる
- keyとvalueの間は:
- データの区切りは,
- オブジェクトは{}で囲む(順番関係ないデータ)
- 配列は[]で囲む(順番関係あるデータ)
- キーは「”(ダブルクオーテーション)」で囲む
- 値が数値の場合はそのまま記述し、値が文字列の場合は「”(ダブルクオーテーション)」で囲む
