いまさら聞けない「Ansible」…押さえておきたい機能と優位性
上記はIDC Japanの2016年度調査(*1)によるものですが、調査対象となった国内企業309社では「システム管理ツールの使用スキルも含め、システム運用管理担当者のスキル不足は深刻な課題」となっており、「およそ3分の1の企業で運用ミスによる障害/トラブルが毎月発生」していることが明らかになりました。また、「クラウドサービスの主な管理課題は、IaaSではサービスレベルの不安定さ、PaaSではプロビジョニングの自動化ができていないこと」とあり、運用管理の自動化やシステムの一元管理が急務となっていることが見てとれますが、実際は不足しがちなエンジニアに負荷をかけてこなしている現場も多いのではないでしょうか。
Ansibleは、この課題に対応できる構成管理ツールです。インフラ管理上の定型業務や手順をコードに書き起こすことで、運用管理を自動化します。また、運用をコード化することで得られるメリットには、下記のような点も挙げられます。
- 構成管理の簡素化
- オペレーションミスの削減、運用品質の向上
- 人的リソースの最適化
- 履歴管理と問題点の洗い出し
- 運用手順書からの開放
注 *1 2016年 国内システム運用管理市場 ユーザー実態調査
Ansibleでできること
構成管理ツールとしてご紹介したAnsibleですが、実際には3つの機能を持つツールです。
- プロビジョニング
- オーケストレーション
- 構成管理
Ansibleの特長と5つの優位性
オープンソースの自動化ツールには、Puppet、Chefといった先行する製品群がありますが、2012年から開発がスタートしたAnsibleは、後発の技術ということもあり、これまでの運用自動化ツールが課題としてきた問題を解決し、広く利用できるよう作られています。その主たる特徴を5つ挙げてみます。
- シンプルなPlaybook
Ansibleで手順を記述するPlaybookは、YAML形式と呼ばれる構造化テキストフォーマットで記述されます。これは、従来のツールで必要だったプログラミング知識が不要で、設定ファイルやログファイルでもよく使われている形式です。マークアップ言語と違い読みやすく、分かりやすく、書きやすいため、プログラマーからインフラ運用担当者まで、多くの人に理解しやすい記述が可能になります。
- パワフルな拡張性
Ansibleには、管理対象サーバーやサービスごとに数多くのモジュールが用意されています。サーバーの設定、ファイアウォールのポート開放などのモジュール処理の組み合わせをPlaybook に定義しておけば、サーバー構築に必要な一連の作業を一括して行え、システム管理、サーバー管理、クラウド管理、ネットワーク管理を自動化できます。
Ansibleのモジュールリスト http://docs.ansible.com/ansible/list_of_all_modules.html
- エージェントレス
Ansibleは他の自動化ツールと異なり、エージェントのインストールが不要で、Python 2.4以降がインストールされてさえいれば、SSH接続により運用管理が行えます。サーバー側にツールをインストールする必要もありません。また、作業を実行するために必要なファイルはわずか2つ(Playbookとリモートホストの管理用inventoryファイル)だけで、プログラムもコンパクトです。
- 冪等性(べきとうせい)がある
AnsibleのPlaybookでは、リモートホストの「あるべき状態」を定義して記述します。このPlaybookを実行すると、定義に合わせた設定がサーバーに適用されますが、いったんあるべき姿になっていれば、それ以降はサーバーの状態は変わりません。つまり、何度同じPlaybookを実行しても同じ結果になりますが、これを冪等性と呼びます。
- スタンドアローンでも利用できる
ChefやPuppetと比べて、クライアント・サーバー構成は必須ではないため、小規模での利用がしやすいです。リモートホストだけでなく、ローカル環境も管理対象にすることが可能です。
参考までに、他の主なオープンソースの自動化ツールの比較表を挙げておきます。
Ansibleのライセンスの種類
Ansibleのライセンスの種類は下記の通りです。
自動化エンジン | IT自動化フレームワーク | |
---|---|---|
コミュニティ版 | Ansible | Ansible AWX |
Red Hat製品版 | Ansible Engine | Ansible Tower |
Ansible
Ansible はIT を自動化するためのエンジンを提供します。インフラ管理上の定型業務や手順をコードに書き起こすことで、運用管理を自動化します。
Ansible Engine
Ansible Engine はレッドハットが提供するAnsible のエンジン部分をサポートするサブスクリプションです。Ansible Tower をご利用の場合もエンジン部分のサポートが必要な場合は本製品をご購入頂く必要があります。
Ansible Tower、Ansible AWX
Ansible Tower は企業での大規模なAnsible の利用に向けた管理ツールを提供します。この拡張機能にはGUI ベースでの管理画面の他、権限管理や証跡管理など企業のコンプライアンスを遵守するための機能が含まれています。
Ansible AWX は、Ansible Tower のアップストリームとしてオープンソースとして公開された新たなプロジェクトです。
Ansibleの構成
Ansible は、実行する作業手順(Task)を Playbook に定義し、実行対象となるサーバー群は
Inventoryに記述し管理することで、サーバー構築や運用に必要な一連の作業を一括して行えます。
ユーザーはPlaybookとInventoryを指定してAnsibleを実行します。
またLinuxの管理だけでなく、Windows環境やMS Azure、AWSなどのクラウド環境の管理やネットワーク機器の管理まで行う事ができます。(対応モジュールが提供されていることが条件です)
Ansibleは2015年にRed Hat社に買収され、2017年にはエンタープライズ向けのプロプラエタリ製品として、Web UIを持つ管理システムのAnsible Towerが販売開始されました。エンタープライズで全社規模での自動化を実施するには、設定、構成、プロセスの自動化検討の他にも、コンプライアンスの遵守に伴う権限や履歴の管理、可視化が重要になります。
次回は、それを踏まえた製品の違いについて解説します。