BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Ansible】Ansibleの無償版と有償版の違い

こんにちは!
BFT名古屋支店の、佐野です。

いよいよ2020年も残すところ1ヶ月となりました。
様々な変化が起こり、季節の境目も曖昧になりつつあることもあって、いつもと同じ1年だというのに妙に長く感じた気がします。

さて、今回はオープンソースの構成管理ツールであるAnsibleにおいて、従来からある無償提供のコミュニティ版(現在は“Ansible project”)と、Red Hatから提供されている有償のエンタープライズ版(現在は“Ansible Engine”)の違いについてと、エンタープライズ版の付加機能ソフトである“Ansible Tower”、そのコミュニティ版として位置づけられている“AWX Project”の違いについてお送りさせて頂きます。


はじめに

この記事を書くに至ったきっかけとして、とある案件を進めるうえで以下のような質問を頂いたことがあります。

「Ansibleには無償版と有償版があるようだが、どのような違いがあるのか」

その際は特にAnsible Tower(以下Tower)の存在を大きな違いとして挙げましたが、先に述べた通り現在はAWX Project(以下AWX)というコミュニティ版Towerと言えるべきものが登場しています。
使えるのがTowerかAWXかという違いも勿論間違いではありませんが、今回はより細かく踏み込んだ差異について触れていきます。


Ansible project(無償版)とAnsible Engine(有償版)の違いは?

Ansibleそのものの、という意味では違いはありません。

踏み込むと言って早速で申し訳ないのですが、内部の仕様としての違いは殆ど無いと言えると思います。
ただし商用であるAnsible Engineは、開発用として見られているAnsible project(以下Ansible)とは“Ansible Engineは提供元であるRed Hatからのサポートがある”という一点で大きく異なります。
有償提供版としては当然ではありますが、恒常的な運用をするのであればサポートの有無は大きいと言えるでしょう。
使用するplaybookの作成やデバッグ、ネットワークモジュールやカスタムモジュールへの対応などサポート対象外の項目もありますが、Ansible自体の使用法やRed Hatに認定されているモジュールに関するサポートは受けることができます。
(ネットワークモジュールへのサポートは、別売りとなる「Red Hat Ansible Engine Networking Add-on」で受けることができます)

またAnsible Engineのバージョンにはライフサイクルが設定されています。
Ansibleはそのコミュニティにより日々目まぐるしく変化していますが、商業として用いるものは概ね安全で安定した信頼性の高いものが求められます。
そのためAnsible Engineについては最新以外のバージョンについても、そのライフサイクルの中の期間であればサポートを受けることができ、アップデート時の変化に対応する猶予を持つことができます。
(ライフサイクルの明確な期間、サポート対象については公式ドキュメントを参照ください)


Ansible TowerとAWX projectの違いは?

まずTowerおよびAWXというのは、Ansibleの機能を拡張し、Playbook実行(ジョブ)のコントロール、ロールベースの権限管理、GUIおよびダッシュボードによる情報の可視化などが可能となるソフトフェアです。
小中規模の環境であればともかく、複数の部署やチームが関係するような大規模環境を管理するような場合、利用ユーザーあるいはグループごとの認証情報・権限管理や、いつ誰がどのジョブを実行したかの把握など、多くの課題や要望が生じてくることと思います。
そういったものを解決する方法の主たるものとして、TowerとAWXは活用されています。

そのふたつの出来ることの違いはほぼ無いと言えますが、AnsibleとAnsible Engineの関係性とは異なり、大きく違う点がひとつだけあります。
“AWXはDockerを前提とする”という点です。

AWXはDockerコンテナとして提供されるため、インストール先にDockerの実行環境が必須となります。
逆にTowerは複数の依存関係を持つ都合上、Dockerコンテナにインストールすることができません。

当然ですが、AnsibleとAnsible Engineの違いと同じように、有償無償からくる差異もあります。
主にAWXはサポートがない(コミュニティのみ)、アップデートのリリースの頻度が高いことが挙げられます。
またAnsibleと違ってAWX用のドキュメントは存在しないため、Tower用のドキュメントを使って何とかしていく必要があります。
調べたところによると、大半はそれで何とかなりそうではありますが、TowerとAWXには少なからずの差異が存在するため、その仕様の違いによってトラブルが発生してしまう恐れもあります。

個人的には、AWXについてはAnsibleと違って、本番環境で運用するには相応の覚悟が必要だろうと感じています。
AWXはあくまで開発用としてとどめ、環境の運用にはTowerを使った方がよいというのがどうも一般論のようです。


まとめ

以上、AnsibleとAnsible Engine、およびAWXとTowerの違いをまとめると、以下のようになります。

・AnsibleとAnsible Engineの違い
Ansible Ansible Engine
提供元 OSS Red Hat
分類 コミュニティ/開発版 エンタープライズ/商用版
サポート なし(コミュニティレベル) あり※

※サポート対象については公式ドキュメントを参照
※ネットワークモジュールに関しては「Red Hat Ansible Engine Networking Add-on」購入でサポートされる

・AWXとTowerの違い
AWX Tower
提供元 OSS Red Hat
分類 コミュニティ/開発版 エンタープライズ/商用版
サポート なし(コミュニティレベル) あり※
Docker 必須 不要

※サポート対象については公式ドキュメントを参照


最後に

突き詰めても、思ったよりは差異が少ないということが伝えられたかと思います。
ただしAWXとTowerの違いは少なくとも無視できないものであるという印象があり、AWXを本番環境にて運用しようという場合はよく検討をした方がよいと考えます。