Ansible (ソフトウェア)
![]() | |
作者 | Michael DeHaan |
---|---|
開発元 | レッドハット |
初版 | 2012年2月20日 |
最新版 |
6.0.0
/ 2022年6月21日[1] |
リポジトリ |
![]() |
プログラミング 言語 | Python |
対応OS | Linux, Unix系, Windows |
種別 | 構成管理 |
ライセンス | GNU General Public License |
公式サイト |
www |
Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。サーバを立ち上げる際、あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来る[2]。特に大規模なコンピュータ・クラスターを構築する時に、時間の短縮やミスの削減に有用である。構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ[3]。
概要[編集]
Ansibleでは、一連の処理内容を記述するPlaybookがYAML形式のテキストファイルであり、プログラミング言語を用いる他の構成管理ツールと比べ、学習が容易である。また管理対象サーバーにエージェントをインストールする必要もないなど、シンプルな構成となっている[3]。
Ansibleは元々Ansible, Inc.により開発されていたが、同社は2015年10月にレッドハットにより買収された[3]。
他の構成管理ツールであるPuppetやChefの置き換えを検討できる程の機能を有している[2]。
アーキテクチャ[編集]
エージェントレス[編集]
Ansibleの特徴の1つに「エージェントレス」であることが挙げられる。
競合するソフトウェアの多くは、構成管理の対象となるサーバなどの機器に対して専用のエージェントを必要とするが、Ansibleでは基本的にPythonが使用可能でSSHが疎通する機器を対象とすることができる。
YAML[編集]
Ansibleにおける一連の処理はPlaybookという単位にまとめられ、PlaybookはYAML形式で記述される。
Chefをはじめとしてその他の構成管理ツールでは独自のDSLを採用することが多い一方で、Ansibleでは一般的なYAML形式を採用することで、可読性が高く学習が容易であると言われている。
一方で、一般的な記述を採用するが故に、他の構成管理ツールと比較して複雑な処理を苦手とする側面があり、多段の条件分岐や反復構造を取る場合はかえって記述が難解となるケースがみられる。
モジュール[編集]
Ansibleでは、様々な設定や機器を必要最小限のパラメータで制御することができるが、制御にあたっては管理対象に応じたモジュールを選択する必要がある。
最も基本的なモジュールでは、変数に応じてファイルを配置するtemplateモジュールやサービスの状態を制御するsystemdモジュールなどがある。
Ansible 2.0以降、AWS/Azure/GCP/OpenStackをはじめとするクラウド関連モジュールや、Cisco/Juniper/F5などのネットワーク機器関連モジュールが重点的に展開されている。
2019年11月22日現在で、3,389モジュールが提供されている。
冪等性[編集]
Ansibleも他の構成管理ソフトウェアと同じく、「冪等性の担保」を機能の1つとしてアピールしている。
前述のモジュールは基本的に冪等性を担保するように作られているため、構成管理において厄介な「何度実行されても同じ状態に収束する」ことをツール側が保証するようになっている。
例外的にサーバなどでシェルコマンドを単純に実行するshellモジュールなどでは、Ansible自体で冪等性を担保できないため、ユーザ自身が冪等性に気を遣う必要がある。
エコシステム[編集]
構成管理を行うAnsibleそのものの他に、構成管理を補助するツールがエコシステムとしていくつか存在する。
Ansible Tower[編集]
Ansibleでは、多種多様な機器の管理を行うため、対象そのものの管理や使用するPlaybookの管理もまた課題となっていくことが多い。
そうした課題のため、Ansibleとしてのホスト管理や、Playbook単位での権限管理などが可能となるAnsible TowerというGUIツールがRed Hatから販売されている。
Ansible Towerは商用のプロプライエタリ製品であるが、その元となるOSSであるAWXが無償で公開されている。
molecule[編集]
Ansibleのロール開発とテストを支援するように設計されたソフトウェア。
Ansible 2.4 以上をサポートしている。
Ansible-Galaxy[編集]
Ansibleではサーバなどの構成をPlaybookという単位でまとめることができるが、Webサーバなどの一般的な構成を管理する場合、多くの部分は同様の構成を望むユーザへ流用可能である。
そうした際に、流用可能な処理をroleという単位で分離し、roleを共有できる仕組みがAnsible-Galaxyである。
Ansible-Galaxyは企業内外で利用可能で、企業内に閉じたrole共有をすることもできれば、GitHubを利用して広く一般にrole共有を行うことができる。
TestInfra[編集]
構成管理ツールであるAnsibleでは、文字通りサーバ機器などの構成の正しさを保証するものの、結果的にそこで動作するシステムの振る舞いの正しさを保証するわけではない。
そのため、振る舞いを確認するためにアプリケーションでいうところのXUnitのようなテストツールが必要になる。
Ansibleではサーバの種類などで管理対象をグルーピングすることが可能であるが、TestInfraはテスト対象の指定にAnsibleの管理対象を同様に選ぶことができるのが特徴である。
Ansibleの由来[編集]
Ansibleは、オーソン・スコット・カードの小説「エンダーのゲーム」に登場する超光速通信機「アンシブル(Ansible)」を由来に持つといわれる[4]。 超光速通信機「アンシブル(Ansible)」自体は アーシュラ・K・ル=グウィンの小説「ロカノンの世界」が初出。
脚注[編集]
- ^ “https://pypi.org/project/ansible/#history”. 2022年6月29日閲覧。
- ^ a b “オープンソースの運用管理・運用自動化/Ansibleとは”. 2018年1月9日閲覧。
- ^ a b c “構成管理ツールとしてAnsibleを選ぶべき理由”. ThinkIT (2016年3月1日). 2016年4月30日閲覧。
- ^ AnsibleWorks is now just Ansible! (Google Groups - Ansible Project)
関連項目[編集]
外部リンク[編集]
- 公式ウェブサイト (英語)