フォーム読み込み中
こんにちは!コーポレートIT本部の越前屋です!
この連載企画【One Tech】も今回で6回目になります!
この記事は、ソフトバンク Advent Calendar 2022 の 12日目の記事になります。
【One Tech】とは、様々な部署・職種のエンジニアが世の中にある様々なIT関連のキーワードや流行の1つに着目し、独自あるいはその職種ならではの視点からIT関連の技術用語やトレンドについて執筆していく連載企画です。
私は今年SBのインフラを支える部隊に配属となり、データセンターへ足を運ぶ機会があるのですが、皆さんはデータセンターとはどんなところか想像できますか?
おそらく「フロア全体に機器がたくさんあって、大量のデータを管理している場所」と想像している方も多いと思います。みなさんの想像通り、データセンターでは多くのサーバやネットワーク機器が安全に管理されています。ネットワークが大規模になれば、それだけ運用・管理が大変になります。では、たくさんの機器をどのように管理していると思いますか?
今回は私、越前屋が、サーバ構成管理ツールの必要性と主要構成管理ツールについて解説します!初歩的な内容ですが、こちらの記事がサーバ構成管理ツール入門の一歩となれば幸いです。
従来手法の問題点から構成管理ツールの必要性について解説します。管理者間での情報共有不足やファイルの管理ミスなどにより、同一の設定がなされるべき危機感で発生する設定の差異のことを構成ドリフトと言います。構成ドリフトは、解決のための分析や判断が難しく工数のかかる問題となります。ネットワーク機器を使うためにはさまざまな設定をする必要があります。一台づつネットワーク機器の設定や、設定ファイルの管理を手動で行うことは、大規模ネットワークではミスを誘発し非効率であり推奨されません。このような人的ミスから構成ドリフトを発生させないために、構成管理を自動化するための構成管理ツールが開発されました。
次に、構成管理ツールの動作概要について解説します。構成管理ツールをインストールしたサーバは、共有フォルダで各機器の設定ファイルを一元管理します。その設定ファイルを参照して機器の設定を行うため、管理している設定ファイルを編集することで各機器の設定変更を行います。構成管理サーバでは共有フォルダの設定ファイルと実際の機器設定の差異を比較することで、構成ドリフトの発生を検知することができます。設定に差異があった場合は管理者に通知することで高精度リフトによるアクシデントを未然に防ぐことが出来ます。
https://proengineer.internous.co.jp/content/columnfeature/20537より引用
最後に主要構成管理ツールとして知られているAnsible、Puppet、Chefについて解説します。
Ansibleは、Red Hat社が開発するオープンソースの構成管理ツールです。構成管理サーバ(コントロールノード)から各ネットワーク機器(マネージドノード)へ設定を送るPush型の通信を行います。sshなどのリモートプロトコルを使います。またAnsibleはエージェントレスモデルを採用しています。これは各ネットワーク機器に対してソフトウェアをインストールすることなく設定を行うことができるモデルです。構成ファイルはYAML形式で記述されます。YAMLはデータを表現する形式の一つで、他のデータ形式より視覚的に分かりやすい特徴があります。記述方式は操作手順を順番に記述する手続き型です。Ansibleは以下のyamlファイル(インベントリ)で制御します。
Ansibleの制御ファイル
Playbook | 構成管理対象機器や実行コマンドなどを記述するファイル |
Inventory | 構成管理対象機器のリストを記述するファイル |
Template | 複数機器に共通する設定を記述するファイル |
Variables | 各機器固有の設定を記述するファイル |
PuppetはPuppet Labsが開発するオープンソースの構成管理ツールです。ネットワーク機器が構成管理サーバから設定を取得するPull型の通信を行います。構成管理されるネットワーク機器がPuppetのサーバから設定を取得する際に、HTTPSなどを使用してサーバのTCP8140番ポートに接続します。またPuppetはエージェントモデルを採用しています。これは各ネットワーク機器に対してソフトウェアをインストールする必要があるモデルです。構成ファイルはPuppetの独自言語で記述されます。記述方式はあるべき状態の宣言を記述する宣言方式で、以下のファイルで制御します。
Puppetの制御ファイル
Manifest | デバイスの設定終了時の状態を記述するファイル |
Resource | ユーザ、パッケージング、ネットワークなどのパラメータを記述したコード |
Class | 複数のResourceをまとめたもの |
ChefはChefが開発するオープンソースの構成管理ツールです。ネットワーク機器が構成管理サーバから設定を取得するPull型の通信を行います。構成管理されるネットワーク機器がChefのサーバから設定を取得する際に、HTTPSなどを使用してサーバのTCP10002番ポートに接続します。またChefはエージェントモデルを採用しています。これは各ネットワーク機器に対してソフトウェアをインストールする必要があるモデルです。AnsibleやPuppetとの違いはとして、管理対象機器がChefに対応している必要があります。構成ファイルはRubyで記述されます。記述方式は操作手順を順番に記述する手続き型で、以下のファイルで制御します。
Chefの制御ファイル
Resource | 構成管理対象機器や実行すべき作業を記述したコード |
Recipe | ResourceをまとめたファイルでResourceを操作する |
CookBooks | Recipe実行のために必要なファイルやデータを集めたディレクトリ |
Runlist | 特定機器に対して使用するRecipeのリスト |
今回は、サーバ構成管理ツールの必要性と主要構成管理ツールについて解説していきましたが、いかがだったでしょうか?
サーバの構成管理ツールについて少しでも理解が深まれば幸いです。これからもITインフラの需要が高まり、更なる効率化や自動化が求められると思います。今回ご紹介した技術も今後どんな進化をしていくのか楽しみです。
またこちらの内容は資格試験「CCNA(Cisco Certified Network Associate)」の出題範囲になっております。ツールについての出題は一部となります。興味を持たれた方はぜひ受験を検討してみてはいかがでしょうか。
次回の【One Tech】もお楽しみに〜!
それでは、ソフトバンク Advent Calendar 2022 13日目にバトンを渡します。
条件に該当するページがございません