自動化とプログラマビリティ

目次

REST APIとは

REST API(Representational State Transfer API) とは、Webシステムを外部から操作するために使われるAPIの一種で、RESTの設計原則に基づいています。
クライアントとサーバはHTTPを利用してやり取りを行い、代表的な操作は GET、POST、PUT、DELETE などのHTTPメソッドで表現されます。
API(Application Programming Interface)という言葉の通り、REST APIは「ソフトウェア同士が共通のルールに従ってやり取りをするための仕組み」と理解すると分かりやすいです。

RESTの4つの設計原則

RESTには複数の設計原則がありますが、代表的な4つを押さえておくことが重要です。試験でもこの分類は頻出です。

1. ステートレスなクライアント/サーバモデル

HTTP通信では、各リクエストが必要な情報をすべて含んでいるため、サーバ側は過去の通信状態を保持する必要がありません。これを ステートレス と呼びます。
ただし、実際にはCookieなどを用いてセッション情報を保持することもあります。

2. リソースは一意のURIで識別

RESTでは扱うデータ(リソース)が URI(Uniform Resource Identifier) によって一意に識別されます。
例えば、ユーザー情報を取得するなら /users/123 のように表現されます。

3. HTTPメソッドによる統一的インターフェース

リソースへの操作方法はHTTPメソッドに統一されています。これにより、どのAPIでも一貫した操作が可能になります。

代表的な操作は CRUD(Create, Read, Update, Delete) です。

CRUD操作HTTPメソッド説明
CreatePOST / PUT新しいリソースを作成
ReadGETリソースの取得
UpdatePUT / PATCHリソースの更新
DeleteDELETEリソースの削除

4. ハイパーメディアの活用

リソースはHTMLやテキストだけでなく、JSON、XML、YAML などの形式で表現できます。
また、関連データをリンクとして含めることも可能です。これにより、クライアントはレスポンスを受け取りながら他のリソースへ遷移できます。

REST APIにおけるデータ形式

REST APIでは、クライアントとサーバ間の通信にさまざまなデータフォーマットが使われます。特にネットワーク機器では JSONXML がよく利用されます。

  • JSON(JavaScript Object Notation)
    軽量で人間にも読みやすいテキストベースのデータ形式。XMLよりも記述が簡潔。拡張子は .json
    Cisco製品のSDNコントローラでもよく使われます。
  • XML(Extensible Markup Language)
    タグを用いてデータの意味や構造を明確に表現できるマークアップ言語。自由度が高く、設定ファイルや情報交換に広く使われる。拡張子は .xml
  • YAML(YAML Ain’t Markup Language)
    インデントで階層を表現するデータ形式。シンプルかつ人間に読みやすく、構成管理ツール(例:Ansible)の設定ファイルでよく使われる。拡張子は .yaml または .yml

REST APIとステータスコード

REST APIでリクエストを送信すると、サーバは処理結果を HTTPステータスコード で返します。
例えば:

  • 200 OK(成功)
  • 201 Created(リソース作成成功)
  • 400 Bad Request(不正なリクエスト)
  • 404 Not Found(リソースが存在しない)
  • 500 Internal Server Error(サーバエラー)

Cisco製品のSDNコントローラでも、レスポンスは主に JSONまたはXML の形式で返され、ステータスコードとともに結果が通知されます。

・REST APIは HTTPベースのWeb API である
ステートレス / URIによる識別 / HTTPメソッド / データ形式(JSON, XML, YAML) がキーワード
・CRUDとHTTPメソッドの対応関係を覚えておく
・Cisco製品では JSONまたはXMLレスポンス が基本

特にCCNA試験では「REST APIの設計原則」「CRUD操作」「JSON/XMLの特徴」が出やすいため、ここを押さえておくことが合格の近道です。

構成管理ツールとは

構成管理ツール とは、複数のサーバやネットワーク機器に対して、あらかじめ用意した設定ファイルに基づき、自動でソフトウェアのインストールや設定変更を行うためのツールです。大規模な環境では、人手で一台ずつ設定すると時間や工数がかかり、設定ミスも発生しやすいため、構成管理ツールを使うことで統一的で効率的な運用が可能になります。

代表的な製品には Ansible(RedHat社)Puppet(Puppet Labs社)Chef(Chef Software社) などがあります。特にAnsibleはシンプルで導入しやすく、ネットワーク自動化にも広く利用されています。CiscoやJuniper、F5、Aristaといった主要なベンダーの機器にも対応しています。

構成管理ツール導入のメリット

構成管理ツールを使わない場合、管理者は各ネットワーク機器にログインしてコマンドを入力し、設定を一台ずつ更新しなければなりません。一方で、構成管理ツールを使えば管理サーバから一括で設定を反映できるため、効率が飛躍的に向上します。

また、構成管理ツールを導入することで 構成ドリフト を防止できます。構成ドリフトとは、作業手順の不備や人為的ミスにより、本来の設定からずれてしまう現象です。ツールを活用することで自動的に正しい構成が維持され、安定した運用が可能になります。

Ansibleとは

Ansible(アンシブル) はRedHat社が開発したオープンソースの構成管理ツールで、次の3つの機能を併せ持っています。

  • 構成管理:設定や環境の自動適用
  • デプロイメント:アプリやファイルの配布、パッケージのインストール
  • オーケストレーション:システム全体や複数サービスを連携して自動化

Ansibleは特にネットワーク機器やクラウドとの親和性が高く、マルチベンダー環境でも使いやすいのが特徴です。

Ansibleの3つの特長

  1. エージェントレス
    管理対象機器に専用ソフトを入れる必要がなく、SSHやNETCONFを利用して直接制御できます。
  2. 豊富なモジュール
    サーバやネットワーク機器ごとに多様なモジュールが提供されており、サービスの起動・停止、ファイアウォール設定、クラウド制御など幅広い自動化が可能です。
  3. 簡単な記述方式
    設定ファイルはYAML形式で記述するため、プログラミング知識がなくても操作できます。他の構成管理ツールに比べ、初心者でも扱いやすいのが強みです。

Ansibleの仕組み

Ansibleは PlaybookInventory というファイルを基盤に動作します。

ファイル役割
Playbook管理対象機器に実行させるタスク(設定内容)を記述したファイル
Inventory管理対象機器の一覧や役割を記述したファイル

AnsibleサーバはPlaybookをもとにPythonコードを生成し、それを対象機器に転送して SSHやNETCONF を経由して実行します。この仕組みにより、管理対象機器を効率的に制御できます。

Ansible・Puppet・Chefの比較

構成管理ツールの代表3製品を比較すると以下のようになります。

比較項目AnsiblePuppetChef
開発組織RedHatPuppet LabsChef Software
使用言語PythonRubyRuby
アーキテクチャエージェントレスエージェントエージェント
管理方式Push型(サーバから配布)Pull型(対象機器が取得)Pull型
制御ファイルPlaybookManifestRecipe
記述言語YAML独自DSLRuby
使用プロトコルSSH/NETCONFHTTP/HTTPSHTTP/HTTPS
サーバ待受ポート不要TCP 8140TCP 10002

試験対策として覚えておくべきは、AnsibleはPush型・エージェントレス・YAML記述、Puppet/ChefはPull型・エージェント必要・Ruby系言語、という違いです。

構成管理ツール=設定の一元管理と自動化
構成ドリフト防止 が導入の大きなメリット
Ansible=Push型、エージェントレス、YAML記述 が最大の特徴
Puppet/Chef=Pull型、エージェント必要、Rubyベース

CCNA試験では「Ansibleの特長」「他ツールとの違い」が問われやすいため、表で比較して覚えると理解が定着します。

◆まとめスライド

目次