「他の構成管理ツールと比較した時のAnsibleのメリットって何?」 「Ansibleは何ができて何ができないのか分からない」 と思っている方もいるのではないでしょうか。
そこで今回は
• Ansibleでできること・できないこと
• Ansibleのメリット・デメリット
• 他の構成管理ツールとの比較
について紹介したいと思います。
構成管理ツールの導入を検討している方や、Ansibleの利用を考えている方はぜひ参考にしてみてください。
事前にAnsibleについて詳しく知りたい方は、以下もご確認ください!
1. Ansibleでできること・できないこととは?
Ansibleとは「構成管理ツール」の一種です。構成管理ツールとは「サーバ構成」「ネットワーク構成」などITシステムを構築する要素をまとめることができるもの。従来はそうした構成は人力で管理していましたが、ツールにまとめることで設定やバージョン管理がやりやすくなることが特長です。
構成管理ツールにはAnsible以外にも「Chef」など複数の種類があります。では「Ansibleでできること」はどのようなことでしょうか。簡単にまとめると以下の通りです。
Ansibleでできること
• ブートストラップ
• さまざまな設定管理
• オーケストレーション
Ansibleでできないこと
• 全面運用するにはフルスタックレベルの知識が必要
それぞれ分かりやすく解説します。なおChefとの比較は記事の後半で行います。
1.1 できること
Ansibleでできることは、以下の3つです。
• ブートストラップ
• さまざまな設定管理
• オーケストレーション
ブートストラップとは、実行したいコマンドを事前に書いておくことで、実行するだけでサーバ構築やネットワーク設定ができる仕組みのこと。これまで手動で作業することが多かったインフラ構築を自動化できます。
Ansibleは細かい設定管理も一括して行えるため
• ミドルウェアのセットアップ
• サービスやデーモンの起動管理
• アプリケーションのデプロイ
などの時にも役に立ちます。
またオーケストレーション(システムやアプリ、サービスの設定や管理を自動で行うこと)にも対応しているため、サービスの新規追加、アップデートを行う時にも非常に便利です。ダウンしてしまった時も検知し教えてくれます。
1.1.1「自動化のサイロ化」の解消が期待される
これまでインフラ環境の構築・運用では、以下のような問題がありました。
• 担当者しか自動化方法が分からず、ブラックボックス化してしまう
• 書いてあるコードが属人性高く、引継ぎ作業に時間がかかってしまう
• 環境によって使っているツールやシステムが違うため、扱いづらい
• 他のシステムでは利用できない自動化ツールを導入している
複数人でそれぞれ担当のシステムやサーバーを管理するうえ、管理している環境が異なることからサーバーやネットワーク構成の管理が属人的になりやすいことが従来の構成管理の欠点でした。 しかしAnsibleを導入すれば、システム構築、サーバー構築も同じものを簡単に用意できます。それぞれのシステム、サーバー環境で仕様が違うといった問題を解決できます。
また800近くの製品や機器に対応・連携が取れるため、すでに導入しているツールと併用し運用することが可能です。さまざまな環境に導入でき、自動化のサイロ化の解決が期待できます。
1.2 できないこと
Ansibleで全ての運用を自動化するにはかなりの時間がかかってしまいます。
全て自動化するには、フルスタックレベルの知識が必要です。Ansible自体は非プログラマでも利用できますが、実際に自動化を進めることを目的に導入する場合には知識のある人材が必要です。
さらに、自動化ツール(モジュールやPlaybook)を作りっぱなしで終わるのではなく、開発者・運用者と連携した体制やフローを設計する必要もあります。
現実的には自動化を進めるには、小さなところから少しずつ自動化を進めることが重要です。
2. AnsibleとChefの比較
これまでAnsibleについて紹介してきましたが、他の構成管理ツールとの違いはあるのでしょうか。ここでは、Chef(シェフ)との比較してみましょう。
Ansible | Chef | |
---|---|---|
概要 | RedHat社が提供。YAML形式を採用しているオープンソースの構成管理ツール | Opscode社が提供。Rubyを採用しているオープンソースの構成管理ツール |
エージェントの有無 | 不要 | 必要 |
メリット |
・YAML形式で誰でも簡単に扱える ・管理対象に余計なシステムを追加する必要がないので安全性が高い |
・スケールアウトに対応できる ・Recipeを使ってクローン構築が可能 |
コードの実行順 | 上から順番 | 必ずしも上からではない |
AnsibleはYAML形式を採用しているため、誰でも簡単に扱えます。しかしChefはRubyを採用しているので、プログラミング言語の知識がないと扱いが難しいでしょう。
またAnsibleではエージェントが不要ですが、Chefの場合は必要といった違いがあります。エージェントが必要ない場合、管理対象に余計なシステムやツールを追加する必要がありません。安全性や導入のしやすさを考慮すると、Ansibleが良いのではないでしょうか。
▸ Ansibleのダウンロード
▸ Chefのダウンロード
3. Ansibleが適している案件・適していない案件
ここまでAnsibleの機能や導入のメリットデメリットなどを紹介しましたが、ここからは
• Ansibleが適している案件
• Ansibleが適していない案件
それぞれ詳しく紹介します。
3.1 汎用性が高いツールのため多くの案件に導入しやすい
どんな案件に適しているのか紹介する前に、前提としてAnsibleが汎用性の高さについて紹介します。
Ansibleは他の構成管理ツールと違い、エージェントレスなため他のツールと比較して導入しやすく、多くの製品やサービスと連携できます。
実際に
• 多くの製品やサービスと連携できること
• 800以上のモジュールがあり導入後も運用し安い環境が揃っている
といった点から、既に600社もの多くの企業がAnsibleを採用しています。
汎用性が高く導入している企業も多いと、複数の案件に導入でも安心なのではないでしょうか。
3.2【適している案件】シンプルかつガバナンスを効かせた構成管理が適しているもの
複雑な処理をしない案件は、Ansibleに適しているといえます。というのもAnsibleはデメリットの見出しでお伝えした通り、複雑な処理をするのには記述しづらい特徴があります。
そのため基本的には複雑な処理を必要としない、システム運用や管理といったインフラ周りを扱うシンプルな案件におすすめです。
3.3【適していないもの】大規模なプロビジョニングが必要なもの
適していない案件はデメリットで挙げたとおり、大規模なプロビジョニングが必要な案件です。
Ansible単体では複数人での管理、運用は難しいのが現状です。そのため10台以上で行う大規模なプロビジョニングの場合には、AnsibleTowerの追加が必須になるでしょう。
逆に言えば、AnsibleTowerが導入可能であれば大規模なプロビジョニングが必要でも問題ありません。
4. Ansibleのメリット・デメリット
最後に「まとめ」として、Ansibleのメリット・デメリットをそれぞれ紹介します。
先に概要をお伝えすると以下の通りです。
Ansibleを選ぶメリット
• YAMLでの記述可能
• 直接ログインの機会を減らすことによるセキュリティ向上
• モジュールが豊富
Ansibleのデメリット
• 複雑な処理を記述しづらい
• 大規模なプロビジョニングにはAnsible Towerが必須
4.1【メリット】YAMLでの記述可能
AnsibleではYAML形式を採用しています。他の構成管理ツールではRubyなどのプログラミング言語を使わないといけないため、プログラミング言語の知識がなければ扱うことが難しい点があります。
ですがYAML形式は、プログラミングの知識がなくても記述できます。非プログラマでもAnsibleを活用し運用・管理しやすいのが魅力です。非プログラマでも管理することができれば人員の選択肢も広がるため、人的コスト削減に繋がるメリットも。
また非常に簡単な記述方法なため、属人性が出にくいといったメリットもあります。
扱うプログラミング言語によっては、コードの書き方に属人性が出てしまいます。そのため、コードを書いた人以外が理解するのに時間がかかってしまう問題がありました。
しかしYAML形式は属人性がでにくい記述方法なため、簡単に読み書きできて作業時間の削減にも繋がります。
4.2【メリット】直接ログインの機会を減らすことによるセキュリティ向上
他の構成管理ツールは、専用システムやツールを導入する必要があるものがほとんどです。
ですがAnsibleはSSHを利用したエージェントレス(システムやツールを使わずに監視を行うことで、監視対象の負荷が少なくすむ仕組み)のため、管理対象に余計なツールやシステムの追加が必要ありません。
SSHを利用して安全にリモート操作で作業できるため、人員を常駐させてなくてすむメリットもあります。
4.3【メリット】モジュールが豊富
Ansibleには800以上のさまざなモジュールが揃っています。例えばすでに揃っているモジュールをいくつか紹介すると下記の通りです。
• AmazonEC2の設定
• Linuxの各種設定
• CISCOスイッチの設定
• DevOps関連の設定
• ネットワークの設定
他にも細かい動作モジュールの例をあげると
• パッケージ管理
• サービス制御
• ファイル処理
• コマンド実行
などのモジュールが用意されています。
このように非常に多くのモジュールが揃っているため、一からモジュールを作る必要がありません。そのため一度調整してしまえば、他のサービスやシステムに使いまわしでき、新しいサーバーやネットワークを構築する際に工数や作業時間の削減が可能です。
4.4【デメリット】複雑な処理を記述しづらい
ここまでメリットを紹介してきましたが、Ansibleにもデメリットがあります。1つ目に紹介するデメリットは「複雑な処理を記述しづらい」という点です。
例えば
• 多段の条件分岐
• 反復構造
などといった記述をしたい場合です。
そもそもAnsibleはPlaybookを使った冪等性(べきとうせい:何度同じ処理をしても、同じ結果が得られること)が重視されています。そのうえ記述方式もYAML形式を採用しているため、上記のような複雑な処理は記述しづらいです。
とはいえ、記述が複雑になってしまうというだけで複雑な処理が全くできないわけではありません。こちらもモジュールのように一度記述してしまえば、他のシステムにも活かせます。
4.5【デメリット】大規模なプロビジョニングにはAnsible Towerが必須
最後にお伝えするデメリットは「大規模なプロビジョニングにはAnsibleTowerが必須」 という点です。
Ansible TowerはRedHat社が提供しているサブスクリプションの1つで、Ansibleの環境を複数で管理しやすいサービスです。
Ansible単体では複数人での管理が難しいため、Ansible Towerを追加で導入しなければいけません。AnsibleTowerを追加で導入すると大規模なプロビジョニングが可能になります。
AnsibleTowerは最大10台までなら無料で利用でき、10台以上になると追加費用が発生する仕組みになっています。10台以上利用する場合は、下記の2つのコースどちらかを選択しなければいけません。
コース | 料金 | 内容 |
---|---|---|
standard | 169万円/年(100ノード) |
・あらゆる規模の環境管理 ・エンタープライズサポート(週5、1日8時間) |
Premium | 227万円/年(100ノード) |
・ミッションクリティカルな環境を含む、あらゆる環境の管理 ・プレミアムサポート(年中無休) |
10台以下の場合は無料で使えるので、まずはお試し版を導入してみるのがおすすめです。
5.【不明点別】Ansible関連の役立つドキュメント
参考資料として、不明点別のAnsible関連の役立つドキュメントもまとめました。
構成管理ツールの中でも非常に便利なAnsibleですが、Ansible以外にもAnsibleTowerなど追加サービスがあり、「この場合はどうしたらいいの?」「この問題はどう解決すればいいの?」と悩んでしまうことも。
「インストール時」や「実際の運用時」に役立つ資料のリンクを紹介するため、Ansibleを利用する際はぜひご活用ください。
5.1 インストールする場合に役立つリンク
Ansibleのインストール方法については、以下の公式サイトで確認もできます。
▸ Installing Ansible|Ansible
もしも「英語表記で不安...」といった方がいれば、以下記事をご確認ください!
5.2 モジュール関連リンク
Ansibleでは、モジュールの使い方を覚えていくことが重要です。困った時は、以下の公式サイトから使い方を確認しましょう。
▸ Ansibleのモジュール関連リンク
5.3 AnsibleTower関連リンク
先ほどお伝えした通り、Ansible Towerは複数人で管理する場合や、大規模なプロビジョニングをする上で必須です。最新のバージョンやリリースノートは、以下をご確認ください!
▸ Ansible Towerのバージョン
▸ AnsibleTowerのリリースノート
5.4 GitHubのイシューリンク
AnsibleはGitHubを利用することもあります。問題が解決しない場合は、GitHub側に問題解決の糸口がないか探してみるのもおすすめです。
▸ AnsibleのGitHubのイシューリンク
6. まとめ
ここまでAnsibleでできることやできないこと、メリットやデメリットについてお伝えしてきました。改めておさらいをします。
まずAnsibleでできることとできないことには以下の通りです。
Ansibleでできること
• ブートストラップ
• さまざまな設定管理
• オーケストレーション
Ansibleでできないこと
• 全面運用するにはフルスタックレベルの知識が必要
またAnsibleのメリットやデメリットにはこんなことがありました。
Ansibleを選ぶメリット
• YAMLでの記述可能
• 直接ログインの機会を減らすことによるセキュリティ向上
• モジュールが豊富
Ansibleのデメリット
• 複雑な処理を記述しづらい
• 大規模なプロビジョニングにはAnsible Towerが必須
ここまで紹介した通り、構成管理ツールのなかでもAnsibleはYAML形式を採用している他、エージェントレスなため非常に導入しやすいのが特徴です。
複数人で運用や管理を行う場合はAnsibleTowerも合わせて追加しないといけませんが、10台までなら追加費用がかからずに利用できるので、まずは試しに使ってみることをおすすめします。