Ansibleの概要
Ansible(アンシブル)はインフラにおけるサーバ構成管理や、サーバへのファイル展開作業など
を自動化するPython製のオープンソース・ソフトウェアです。
システム構築において、特定機能・構成を持つサーバを複数用意する必要がある場合、
サーバ一台ごとにインストール・設定作業を行うには非常にコストがかかります。
また、手作業の作業量が増えることでミスが発生する可能性も高くなってしまいます。
このような問題に対応するため、Ansibleをはじめとするサーバ構成管理・自動化ツールが
開発されました。
Ansibleと類似する機能を持つソフトウェアとしてはChefやPuppetなどが挙げられます。
AnsibleはAnsible,Inc.を中心に開発・サポートが行われていましたが、
Ansible,Inc.は2015年10月に米RedHat,Inc.に買収されました。
RedHat,Inc.はAnsibleの開発は勿論のこと、その利用を簡便化するツールである
Ansible Towerも開発・リリースしており、Ansibleとその周りのツールについては、
今後その発展が期待されます。
Ansibleの主な特徴
類似するサーバ構成管理・自動化ツールと比べたときAnsibleの特徴としては、
下記のような点が挙げられます。
- エージェントレスであること
Ansibleを利用する場合、特に比較されることの多いChefと異なり構成管理対象である
ホストにクライアントなどをインストールする必要はありません。
管理側のホスト・管理対象のホストが動作条件を満たせばすぐにでも利用可能です。
- シンプルで初学者でも理解が容易であること
Ansibleの処理は、playbookと呼ばれるYMLファイルでシンプル且つ
容易に理解できる形で記述することが可能です。
例えば、特定のグループ(yum_group)に属するサーバにおいて、rootユーザでyumの
updateを実行するplaybookは下記のように記述できます。
- hosts: yum_group gather_facts: False
remote_user: root |
# 対象のグループを指定 # ターゲットホストの情報を取得しない # リモート接続のユーザには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と呼ばれる処理の共有サービスが存在します。
https://galaxy.ansible.com/
このサービスにより、初学者は既存の処理を利用したり、記述を参照したりすることが可能です。
- 冪等性が確保されていること
Ansibleを使うことで、冪等性を担保することができます。
冪等性とは、同じ処理を何度実行しても同一の実行結果が保証される性質です。
これによって、複数回処理を実行した際に、構成がホストによって崩れてしまうことを
防ぐことができます。
なお、Chefを使った場合でも冪等性を担保することは可能です。
Ansibleの機能
Ansibleを使用することで、以下が可能です。
インベントリの構築 |
|
---|---|
コマンドラインツールの使用 |
|
playbookの使用 |
|
機密データの保護 |
|
モジュールとプラグインの使用 |
|
コレクションの使用 |
|
Ansibleの動作環境
前提となる動作環境は、以下の通りです。
- 管理側のホストに、Python3.8以上がインストールされていること(Ansible 2.11以降。ただし、Windowsでの動作はサポートされません)
- 管理対象のホストに、Python2.6以上もしくはPython3.5以上がインストールされていること
- 管理側のホスト・管理対象のホスト間でSSH通信が可能であること
Ansibleのライセンス
Ansibleのライセンスは、GPL v3.0(GNU General Public License)です。
ソフトウェアのコピーや配布、ソースコードの公開を原則とし、ソースコードを改変も
認められています。
参考情報
Ansibleのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。