Ansible (ソフトウェア)
概要
Ansibleでは、一連の処理内容を記述するPlaybookがYAML形式のテキストファイルであり、プログラミング言語を用いる他の構成管理ツールと比べ、学習が容易である。また管理対象サーバーにエージェントをインストールする必要もないなど、シンプルな構成となっている。
Ansibleは元々Ansible, Inc.により開発されていたが、同社は2015年10月にレッドハットにより買収された。
他の構成管理ツールであるPuppetやChefの置き換えを検討できる程の機能を有している。
エージェントレス
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年1月16日現在で、2078モジュールが提供されている。
冪等性
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共有を行うことができる。
Ansible-Container
サーバの構成管理と同様に課題が持たれるのが、コンテナの構成管理である。
一般的に1つのアプリを実行環境ごとコンテナという単位にまとめ、サーバ内でのライブラリ依存などを気にせず実行できるようにするコンテナの思想があるものの、アプリの複雑さによってはコンテナの構成のみであっても構成管理に課題が現れる場合がある。
そのため、コンテナの構成管理にもAnsibleとYAMLでの平易で明快な記述を導入しようというのがAnsible-Containerである。
TestInfra
構成管理ツールであるAnsibleでは、文字通りサーバ機器などの構成の正しさを保証するものの、結果的にそこで動作するシステムの振る舞いの正しさを保証するわけではない。
そのため、振る舞いを確認するためにアプリケーションでいうところのXUnitのようなテストツールが必要になる。
Ansibleではサーバの種類などで管理対象をグルーピングすることが可能であるが、TestInfraはテスト対象の指定にAnsibleの管理対象を同様に選ぶことができるのが特徴である。
Ansibleの由来
Ansibleは、オーソン・スコット・カードの小説「エンダーのゲーム」に登場する超光速通信機「アンシブル(Ansible)」を由来に持つといわれる。