Ansible (ソフトウェア)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Ansible
Ansible Logo.png
作者 Michael DeHaan
開発元 レッドハット
初版 2012年2月20日(6年前) (2012-02-20
最新版 2.7 / 2018年10月4日(2か月前) (2018-10-04
リポジトリ github.com/ansible/ansible
プログラミング言語 Python
対応OS Linux, Unix系, Windows
種別 構成管理
ライセンス GNU General Public License
公式サイト www.ansible.com
テンプレートを表示

Ansibleアンシブル)は、レッドハットが開発するオープンソース構成管理ツールである。サーバを立ち上げる際、あらかじめ用意した設定ファイルに従って、ソフトウェアのインストールや設定を自動的に実行する事が出来る[1]。特に大規模なコンピュータ・クラスターを構築する時に、時間の短縮やミスの削減に有用である。構成管理に加え、オーケストレーションソフトウェアデプロイメントの機能を持つ[2]

概要[編集]

Ansibleでは、一連の処理内容を記述するPlaybookがYAML形式のテキストファイルであり、プログラミング言語を用いる他の構成管理ツールと比べ、学習が容易である。また管理対象サーバーにエージェントをインストールする必要もないなど、シンプルな構成となっている[2]

Ansibleは元々Ansible, Inc.により開発されていたが、同社は2015年10月にレッドハットにより買収された[2]

他の構成管理ツールであるPuppetChef英語版の置き換えを検討できる程の機能を有している[1]

アーキテクチャ[編集]

エージェントレス[編集]

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などのネットワーク機器関連モジュールが重点的に展開されている。

2017年11月30日現在で、1377モジュールが提供されている。

冪等性[編集]

Ansibleも他の構成管理ソフトウェアと同じく、「冪等性の担保」を機能の1つとしてアピールしている。

前述のモジュールは基本的に冪等性を担保するように作られているため、構成管理において厄介な「何度実行されても同じ状態に収束する」ことをツール側が保証するようになっている。

例外的にサーバなどでシェルコマンドを単純に実行するshellモジュールなどでは、Ansible自体で冪等性を担保できないため、ユーザ自身が冪等性に気を遣う必要がある。

エコシステム[編集]

構成管理を行うAnsibleそのものの他に、構成管理を補助するツールがエコシステムとしていくつか存在する。

Ansible-Galaxy[編集]

Ansibleではサーバなどの構成をPlaybookという単位でまとめることができるが、Webサーバなどの一般的な構成を管理する場合、多くの部分は同様の構成を望むユーザへ流用可能である。

そうした際に、流用可能な処理をroleという単位で分離し、roleを共有できる仕組みがAnsible-Galaxyである。

Ansible-Galaxyは企業内外で利用可能で、企業内に閉じたrole共有をすることもできれば、GitHubを利用して広く一般にrole共有を行うことができる。

Ansible Tower[編集]

Ansibleでは、多種多様な機器の管理を行うため、対象そのものの管理や使用するPlaybookの管理もまた課題となっていくことが多い。

そうした課題のため、Ansibleとしてのホスト管理や、Playbook単位での権限管理などが可能となるAnsible TowerというGUIツールがRedHatから販売されている。

Ansible Towerは商用のプロプライエタリ製品であるが、その元となるOSSであるAWXが無償で公開されている。

Ansible-Container[編集]

サーバの構成管理と同様に課題が持たれるのが、コンテナの構成管理である。

一般的に1つのアプリを実行環境ごとコンテナという単位にまとめ、サーバ内でのライブラリ依存などを気にせず実行できるようにするコンテナの思想があるものの、アプリの複雑さによってはコンテナの構成のみであっても構成管理に課題が現れる場合がある。

そのため、コンテナの構成管理にもAnsibleとYAMLでの平易で明快な記述を導入しようというのがAnsible-Containerである。

TestInfra[編集]

構成管理ツールであるAnsibleでは、文字通りサーバ機器などの構成の正しさを保証するものの、結果的にそこで動作するシステムの振る舞いの正しさを保証するわけではない。

そのため、振る舞いを確認するためにアプリケーションでいうところのXUnitのようなテストツールが必要になる。

Ansibleではサーバの種類などで管理対象をグルーピングすることが可能であるが、TestInfraはテスト対象の指定にAnsibleの管理対象を同様に選ぶことができるのが特徴である。

Ansibleの由来[編集]

Ansibleは、オーソン・スコット・カードの小説「エンダーのゲーム」に登場する超光速通信機「アンシブル(Ansible)」を由来に持つといわれる。

脚注[編集]

  1. ^ a b オープンソースの運用管理・運用自動化/Ansibleとは”. 2018年1月9日閲覧。
  2. ^ a b c 構成管理ツールとしてAnsibleを選ぶべき理由”. ThinkIT (2016年3月1日). 2016年4月30日閲覧。

関連項目[編集]

外部リンク[編集]