Ansible情報
Ansibleとは
Ansible(アンシブル)はインフラにおけるサーバ構成管理や、サーバへのファイル展開作業などを自動化するPython製のオープンソース・ソフトウェアです。システム構築において、特定機能・構成を持つサーバを複数用意する必要がある場合、サーバ1台ごとにインストール・設定作業を行うには非常にコストがかかります。また、手作業の作業量が増えることでミスが発生する可能性も高くなってしまいます。このような問題に対応するため、Ansibleをはじめとするサーバ構成管理・自動化ツールが開発されました。Ansibleと類似する機能を持つソフトウェアとしてはChefやPuppetなどが挙げられます。AnsibleはAnsible,Inc.を中心に開発・サポートが行われていましたが、Ansible,Inc.は2015年10月に米RedHat,Inc.に買収されました。RedHat,Inc.はAnsibleの開発は勿論のこと、その利用を簡便化するツールであるAnsible Towerも開発・リリースしており、Ansibleとその周りのツールについては、今後その発展が期待されます。
主な機能
Ansibleを使用することで、以下が可能です。
インベントリの構築 |
|
---|---|
コマンドラインツールの使用 |
|
playbookの使用 |
|
機密データの保護 |
|
モジュールとプラグインの使用 |
|
コレクションの使用 |
|
主な特徴
類似するサーバ構成管理・自動化ツールと比べたときAnsibleの特徴としては、下記のような点が挙げられます。
エージェントレスであること
Ansibleを利用する場合、特に比較されることの多いChefと異なり構成管理対象であるホストにクライアントなどをインストールする必要はありません。管理側のホスト・管理対象のホストが動作条件を満たせばすぐにでも利用可能です。
シンプルで初学者でも理解が容易であること
Ansibleの処理は、playbookと呼ばれるYMLファイルでシンプル且つ容易に理解できる形で記述することが可能です。例えば、特定のグループ(yum_group)に属するサーバにおいて、rootユーザでyumのupdateを実行するplaybookは下記のように記述できます。
- hosts: yum_group gather_facts: False
remote_user: root |
# 対象のグループを指定 |
vars_prompt:
- name: yum update prompt
prompt: "Execute yum update ?" private: no default: Y |
# 対話式実行のためのプロンプトを定義 |
tasks:
- name: update yum packages
yum: name=* state=latest when: yum_update =="Y" |
# 処理の定義 |
Ansibleはアーキテクチャそのものも、"SSHログイン"と"処理実行"といったシンプルな構成であるため、初学者でも理解が容易であるといえます。
また、AnsibleにはAnsible Galaxyと呼ばれる処理の共有サービスが存在します。
このサービスにより、初学者は既存の処理を利用したり、記述を参照したりすることが可能です。
冪等性が確保されていること
Ansibleを使うことで、冪等性を担保することができます。冪等性とは、同じ処理を何度実行しても同一の実行結果が保証される性質です。これによって、複数回処理を実行した際に、構成がホストによって崩れてしまうことを防ぐことができます。なお、Chefを使った場合でも冪等性を担保することは可能です。
動作環境
前提となる動作環境は、以下の通りです。
- 管理側のホストに、Python 3.10以上がインストールされていること(WSLのないWindowsでの動作はサポートされていません)
- 管理対象のホストに、Python 3.7以上がインストールされていること
- 管理側のホスト・管理対象のホスト間でSSH通信が可能であること
※2024/09時点の最新バージョン2.17についての情報になります
Ansibleのライセンス
Ansibleのライセンスは、GPL v3.0(GNU General Public License)です。ソフトウェアのコピーや配布、ソースコードの公開を原則とし、ソースコードを改変も認められています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。