IT基盤の構成管理や自動化を行うためのツールとして、Ansibleが注目を集めています。以下では、Ansbileの概要とその思想、製品の種類や機能の違いと、何を実現できるのかについて解説していきます。
Ansibleとはなにか
Ansibleは、2012年にAnsible社により開発された構成管理・自動化ツールです(ツール名と開発会社名が同じ)。具体的には、ハードウェアやソフトウェアなどの構成情報や、ドキュメント等変更記録の一元管理を、Ansibleを用いて自動的に行います。
なお、Ansible社は2015年にRed Hatに買収され、その後ツールはRed Hatから「Red Hat Ansible Automation Platform」というブランドのもとに商用版が提供されると同時に、OSS版も提供されています。
Ansibleの特徴は以下の4点です。
エージェントレス
Ansibleは管理対象となるマシンに、エージェントソフトをインストールせずに、管理対象に追加できます(Pythonがインストールされている必要はありますが、主要なLinuxディストリビューションであれば、Pythonはあらかじめインストールされています)。このため、エージェントソフトの配布やインストールを行うことなく、管理対象を拡大できます。
YAMLの採用
Ansibleが行う処理は、プレイブックと呼ばれる設定ファイルに「YAML」を用いて記載されます。YAMLは「高度な学習が必要となる開発言語」ではなく、HTMLやXMLのような「構造をもったテキスト形式」であるため、可読性が高く、短時間の学習で容易に記述できるようになります。
これは、同種の構成管理ツールであるPuppetやChefと比較すると明らかです。Puppetは独自言語、ChefはRubyと、それぞれ学習に時間を要する言語を用いたプログラミングが必要となります。この点、YAMLを採用しているAnsibleはプレイブックの記載が容易であるため、大きなメリットとなります。
幅広い管理対象
かつての構成管理ツールの管理対象は「デバイス搭載のOSアップデート」「セキュリティパッチ」「デバイスの構成情報」といった限られたものでした。これに対してAnsibleは、仮想化・クラウド化に対応した幅広い管理対象を特徴とします。例えば、クラウドリソース、ネットワーク機器、複数のOSなどに及びます。
なお、Ansibleでは例えば、以下のような非常に幅広い対象に対する処理内容を記述する際、「モジュール」というコンポーネントを利用します。
- クラウド基盤
- ファイル
- モニタリング
- ソース管理
- クラスタリング
- ID
- ストレージ
- コマンド
- ITインフラ
- ネットワーク
- メッセージング
- データベース
- パッケージ管理
- 通知
- 証明書と鍵管理
- Windows など
モジュールには、Ansibleが管理する「対象」ならびに「用途」ごとの処理が記載されています。このモジュールを用いることで「複数のエンジニアが別々にプログラムを書いた結果、処理の実施内容が違った」といった間違いを防ぐと同時に、容易かつ短時間な処理の実行を可能とします。
冪等性の担保
冪等性(べきとうせい)とは、ある処理を1回だけ行っても、複数回行っても結果が同じになる性質、概念です。
Ansibleは、他の構成管理ツールと同様に「何度実行しても同じ状態になる」冪等性の担保を極めて重視しています。例えば、Ansibleは作業を実行する前に状態を確認し、変更を加える必要がなければ処理をスキップする仕様となっており、これも冪等性を高いレベルで確保するための仕組みです。
Ansible製品紹介
Ansibleは、大きく分けて「オープンソースとして提供されている製品群(Ansible)」と、「商用ソフトウェアとしてRed Hatが提供している製品群(Red Hat Ansible Automation Platform)」の2つに分かれます。
特に重要なコンポーネントとその名称を記載します。
OSS版 | 商用版 | |
---|---|---|
自動化エンジン | Ansible | Automation Execution Environment (旧Ansible Engine) |
管理ツール | AWX | Automation Controller(旧 Ansible Tower) |
特に管理ツールにおいては、OSS版のツールと、商用版のツールで下記の差があります。
OSS版 | 商用版 | |
---|---|---|
本番環境での利用 | 非推奨 | 安定性と安全性に優れている |
製品リリース | 最低限のテストでリリース | エンタープライズ環境で利用できる安定バージョンをリリース |
アップグレード | 最低限のテストでリリース | 製品ライフサイクル期間内の複雑なアップグレードテストも実施 |
セキュリティパッチ・バグフィックス | 最新バージョンのみ提供 | 製品ライフサイクル期間内の全バージョンに提供 |
公式サポート | なし | あり |
OSS版のAnsible製品群は、テスト環境での利用や新機能の評価には適していますが、本番環境での利用は非推奨となっています。本番環境での利用や、責任ある製品サポートが必要な場合は、商用版の利用を推奨します。
Ansibleでできること
では、Ansibleを利用して具体的に何を行えるのか、下記で解説します。
プロビジョニング | プレイブックに「あるべき状態」を記載することで、自動でプロビジョニングを実施。さらに、インフラ設定をコード化 (IaC) することで、毎回自動で同じ環境をプロビジョニング可能。 |
構成管理 | システムを一貫性の取れた望ましい状態に維持する。 |
デプロイの自動化 | テスト環境と本番環境の間でソフトウェア移行の自動化を可能にする。 |
オーケストレーション | 複数のタスクやプロセス、ワークフローを自動化。 |
ネットワーク自動化 | ネットワーク 機器とサービス管理を自動化。 |
セキュリティ自動化 | セキュリティに関する調査ならびに、問題があるシステムの修正作業を自動化。 |
自動化、という言葉が繰り返し出てくることから分かる通り、開発における方法論である「DevOps」とは非常に親和性が高いといえます。「CI/CD (Continuous Integration / Continuous Delivery) や「IaC」(Infrastructure as Code) を実現するためのツールとして、Ansibleが利用される場面も多くあります。
Ansibleでできないこと
次に、Ansibleではできないことについても触れていきましょう。
複雑な処理 | YAMLは複雑な処理を行うための言語ではありません。条件分岐や繰り返し処理などを複雑に実装することは、YAMLの記述が複雑になってしまい、向いていません。 |
Ansibleの導入の流れ
では、Ansibleの導入から利用までに必要なステップについて、簡略化して解説します。
1.Ansibleの用途を決める
プロビジョニング、構成管理、デプロイの自動化など、Ansibleは様々な用途で利用可能です。はじめに、どの程度の規模(管理対象)に、どのような作業を行わせたいのか、そしてどの程度の信頼性の確保が必要かを考慮し、「本当にAnsibleが適しているか」「Ansibleを選択する場合、OSS版か商用版か」「管理ツールが必要か不要か」を判断すべきです。
2.Ansibleをインストール・設定する
OSS版のAnsibleはLinuxのOSパッケージマネージャー、Pythonパッケージマネージャー、またはソースからインストールが可能です。最も一般的なインストール先はLinuxマシンです。
なお、商用版のAnsibleは60日間の評価版(無料トライアル)が提供されており、Red Hatのサイトからダウンロードできます(要ユーザー登録)。こちらもLinuxマシンにインストールします。
60日を超えて利用する場合は、ライセンスの購入が必要となります。商用版ライセンスは「Red Hat Ansible Automation Platform」として、「Standard」と「Premium」の2タイプの年間ライセンスが提供されています(買い切り型はなし)。
製品におけるStandardとPremiumの違いはありません。違いは「8時間x平日のみ5日サポートのStandard」と「24時間土日含めサポートのPremium」という点です。ミッションクリティカル環境でAnsibleを利用する場合はPremiumで、そうでない場合はStandardという住み分けとなります。
Red Hat公式ページではライセンス価格は開示されていませんが、複数の販売代理店が「Standard版の年間ライセンス費用が169万円」であることを開示しています (管理対象100ノードまで。2022年4月の情報に基づく)。
なお、OSS版も商用版も、インストール時の設定については手厚いドキュメントが提供されているため、「商用版でなければインストールが困難」といったことはありません。
Ansibleを動作させるのに最低限必要な要素は、Ansibleの実行対象ホストを記述する「インベントリ」と、Ansibleで行わせたい処理内容をYAMLで記述する「プレイブック」です。インストール後は、はじめにインベントリの定義と、プレイブックの記述が必要です。
なお、プレイブックで行う処理(ファイルの転送、サービスの起動停止など)は、あらかじめ「モジュール」という形で準備されています。プレイブックやコマンドで、モジュールを宣言することで、マネージドノードで処理を実施できます。
モジュールはあらかじめ準備されたものを使うだけでなく、自身で作成も可能です。作成する際には、冪等性が確保され、属人化したものにならないよう注意が必要です。
Ansibleのプラグインとは、コア機能の拡張ならびに追加機能を提供するコンポーネントです。必要なプラグインはあらかじめ準備されていますが、モジュールと同じように独自に開発・追加も可能です。
4.処理を実行し結果を確認する
プレイブックに処理を記述した後はAnsibleを実行します。処理が正しく実施されたかを実行後に確認します。実行前のテストにはMoleculeというツールや、チェックモードで想定している処理が行われているか確認ができます。
実行後の結果は、以下のような戻り値で表示されます。下記はその一例です。
- ok
- (処理成功)正常終了した
- changed
- (処理成功)変更が発生し、正常終了した
- skip
- (処理成功)実行条件に該当しなかったため、処理を実施しなかった
- unreachable
- (処理失敗)マネージドノードに接続できなかった
- failed
- (処理失敗)処理を実施したが、エラーが発生し、定義された状態とならなかった
具体的な用途を事例から学ぶ
既に多数の企業がAnsibleを利用して、多くのプロセスを自動化し、工数削減を実現しています。では、どのような企業が、どういったプロセスを自動化しているかについて、以下で解説します。なお、事例はRed Hat公式ページの掲載内容を一部引用しております。
みずほ情報総研 [みずほフィナンシャルグループ] (日本)
プライベートクラウドのハードウェアリソースにおけるセットアップ自動化のため、Ansibleを導入。仮想サーバー構築工数の78%削減に加え、作業期間を6週間から最短3日への短縮に成功し、設定作業の均質化によるインフラの安定性向上を実現。
- 引用元はこちら
ドイツ銀行 (ドイツ)
アプリケーションのPoCから実稼働に移すまでの期間が、従来の6~9か月から、2~3週間に短縮された。Ansibleによって、プロビジョニング、テスト、他の定型作業の自動化により工数が削減できたことに加え、アップグレードおよびメンテナンス時のエラーのリスクが軽減された。
- 引用元はこちら
シーメンス (ドイツ)
自動でデプロイとテストの実施が可能となった。また、監査を自動化したことにより、構成の品質向上と手作業の削減を実現。
- 引用元はこちら
キャセイパシフィック航空 (香港)
Red Hat Ansible Tower を使用して環境と変更要求を自動化し標準化することによって、正確性を向上させながら変更要求の時間を2週間から15分へと短縮。
- 引用元はこちら
このように、様々な用途における自動化が実現できる点がAnsibleが持つ価値といえます。
ネットワーク自動化サービス「Automation Coordinator」
お客様ごとの最適な業務プロセスコンサルティングを含めたAnsibleによる自動化の導入(実際の運用)、ハイスキルなエンジニアによる並走型支援、クライアントワーク、チケットサポート、最終的にはお客様が自動化を自律して運用するためのスキル習得トレーニングまでをパッケージ化して提供するネットワーク運用の自動化支援サービスです。