Ansible(アンシブル)は、プロビジョニング、構成管理、アプリケーションのデプロイメント、オーケストレーション、その他多くのITプロセスを自動化する、オープンソースのIT自動化ツールである。他の単純な管理ツールと違い、Ansibleのユーザー (システム管理者、開発者、アーキテクトなど) は、ソフトウェアのインストール、日常的に行うタスクの自動化、インフラストラクチャのプロビジョニング、セキュリティとコンプライアンスの向上、システムへのパッチ適用、組織全体での自動化の共有に、Ansibleの自動化を使用できる。

## 概要

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

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年頃からモジュールの数が3000以上になったためにAnsible本体のリリース方式に限界が出始めたため、Ansible 2.10からは本体に含めるモジュールは基本的なもののみとして、その他のモジュールはCollectionsとして切り出して別なリリースサイクルで配布されるようになった。これに伴い、リリース番号は本体としてのAnsible Coreと、Collectionsを含む全体のまとまりとしてのリリースのそれぞれに採番されるようになっている。例えば2023年2月現在の最新版であるAnsible 7.2.0では、Ansible Core 2.14.2と110種のCollectionsを含んだものとなっている。

### 冪等性

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

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

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

## エコシステム

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

### Ansible Automation Platform

Ansible Automation Platform は、ハイブリッドクラウドからエッジまで、大規模な IT 自動化を構築して運用するためのエンタープライズ・フレームワークを提供する。Ansible Automation Platform は、開発や運用チームからセキュリティおよびネットワークチームまで、組織全体のユーザーが自動化を作成、共有、管理できるようにする。

IT 管理者は、自動化をどのように適用するかのガイドラインを個々のチームに提供することができ、自動化クリエーターは、既存の知識を利用したタスクを作成できる。Ansible Automation Platform は、エンドツーエンドの自動化を展開するためのより安全で安定した基盤を提供する。

Ansible Automation Platformはいくつかのパッケージから構成されている。いずれもオープンソースのプロジェクトを元にしてレッドハットが開発しサポートを提供している。Red Hat Enterprise Linux (RHEL) もしくは Red Hat OpenShift Container Platform で動作する。

Ansible Automation Platform の構成要素

|  | 元のオープンソースプロジェクト |
| --- | --- |
| automation controller (旧称 Ansible Tower) | AWX |
| Execution Environments | AnsibleAnsible RunnerAnsible LintAnsible Sign |
| Ansible Navigator | Ansible Navigator |
| Ansible Builder | Ansible Builder |
| Private Automation Hub | Pulpgalaxy\_ngansible-hub-uipulp\_containerpulp\_ansible |

### molecule

Ansibleのロール開発とテストを支援するように設計されたソフトウェア。

Ansible の直近2つのバージョンをサポートしている。GitHubの molecule プロジェクトで開発されている。

### Ansible Galaxy

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

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

Ansible Galaxyは企業内外で利用可能で、企業内に閉じた共有であれば上述のPrivate Automation Hubを利用したり、広く一般にコミュニティのものとしてのAnsible Galaxyを利用することもできる。

### Ansible VS Code Extension by Red Hat

Visual Studio Codeで利用できる拡張も提供している。シンタックスハイライトや補完機能、ドキュメントの参照機能などが利用できる。GitHubのvscode-ansibleプロジェクトで開発されている。

## Ansibleの由来

Ansibleは、オーソン・スコット・カードの小説「エンダーのゲーム」に登場する超光速通信機「アンシブル(Ansible)」を由来に持つといわれる。 超光速通信機「アンシブル(Ansible)」自体は アーシュラ・K・ル=グウィンの小説「ロカノンの世界」が初出。