トップ OSS紹介 Ansible

Ansible

NRIのOpenStandiaが提供するAnsible最新情報

Ansible情報

Ansibleとは

Ansible(アンシブル)はインフラにおけるサーバ構成管理や、サーバへのファイル展開作業などを自動化するPython製のオープンソース・ソフトウェアです。

システム構築において、特定機能・構成を持つサーバを複数用意する必要がある場合、サーバ一台ごとにインストール・設定作業を行うには非常にコストがかかります。
また、手作業の作業量が増えることでミスが発生する可能性も高くなってしまいます。
このような問題に対応するため、Ansibleをはじめとするサーバ構成管理・自動化ツールが開発されました。

Ansibleと類似する機能を持つソフトウェアとしてはChefやPuppetなどが挙げられます。

AnsibleはAnsible,Inc.を中心に開発・サポートが行われていましたが、Ansible,Inc.は2015年10月に米RedHat,Inc.に買収されました。
RedHat,Inc.はAnsibleの開発は勿論のこと、その利用を簡便化するツールであるAnsible Towerも開発・リリースしており、Ansibleとその周りのツールについては、今後その発展が期待されます。

主な機能

Ansibleを使用することで、以下が可能です。

インベントリの構築

  • 自動化するサーバとデバイスのリストを追跡
  • 動的インベントリを使用し、サーバとデバイスが常にクラウドサービスを追跡
  • パターンを使用してインベントリの特定のサブセットを自動化
  • Ansibleがインベントリに使用する接続方法の拡張と改良

コマンドラインツールの使用

  • アドホックコマンドと、様々な操作、および自動化タスクを実行するためのユーティリティを提供

playbookの使用

  • 昇格された権限、または別のユーザとしてタスクを実行
  • ループを使用し、リスト内の項目のタスクを繰り返す
  • playbookを委任し、異なるマシンでタスクを実行
  • 条件付きタスクを実行し、playbookテストで条件を評価
  • ブロックを使用し、一連のタスクをグループ化

機密データの保護

  • Vaultパスワードの保護
  • Ansible Vaultを使用したコンテンツとファイルの暗号化
  • 暗号化された変数とファイルの使用

モジュールとプラグインの使用

  • システムリソースの制御や、システムコマンドの実行が可能なモジュールライブラリを提供
  • Ansibleのコア機能を拡張するプラグインアーキテクチャを提供
  • 独自のモジュール、プラグインを作成、使用することも可能

コレクションの使用

  • playbook、ロール、モジュール、およびプラグインを含んだAnsibleコンテンツの配布形式
  • Ansible Galaxyなどの配布サーバを介して使用可能

主な特徴

類似するサーバ構成管理・自動化ツールと比べたとき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と呼ばれる処理の共有サービスが存在します。

このサービスにより、初学者は既存の処理を利用したり、記述を参照したりすることが可能です。

冪等性が確保されていること

Ansibleを使うことで、冪等性を担保することができます。
冪等性とは、同じ処理を何度実行しても同一の実行結果が保証される性質です。
これによって、複数回処理を実行した際に、構成がホストによって崩れてしまうことを防ぐことができます。
なお、Chefを使った場合でも冪等性を担保することは可能です。

動作環境

前提となる動作環境は、以下の通りです。

  • 管理側のホストに、Python3.8以上がインストールされていること(Ansible 2.11以降。ただし、Windowsでの動作はサポートされません)
  • 管理対象のホストに、Python2.6以上もしくはPython3.5以上がインストールされていること
  • 管理側のホスト・管理対象のホスト間でSSH通信が可能であること

Ansibleのライセンス

Ansibleのライセンスは、GPL v3.0(GNU General Public License)です。
ソフトウェアのコピーや配布、ソースコードの公開を原則とし、ソースコードを改変も認められています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Puppet

    Puppet

    パペット。OS設定やアプリケーションの構築を自動化するソフトウェアです。

  • Packer

    Packer

    パッカー。単一のソース構成から複数のプラットフォームに対してマシンイメージを作成するためのオープンソースです。

  • Docker
    サポート対象

    Docker

    ドッカー。ソフトウェアコンテナを用いたアプリケーションのデプロイメントを自動化する仮想化オープンソースソフトウェアです。

  • Chef

    Chef

    シェフ。インフラのサーバ構成管理や、サーバへのファイル展開作業を自動化するソフトウェアです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。