「Ansible」の主な特徴として、「簡単インストール」「シンプル構成」「Playbook(YAML形式設定ファイル)」「冪等性」「モジュール構造」「処理管理単位(タスク)」「タスク実行後処理(ハンドラ)」「エージェントレス(SSH接続)」「対話的処理実行(アドホックコマンド)」について紹介します。

「Ansible」の主な特徴

「Ansible」の主な特徴として、「簡単インストール」「シンプル構成」「Playbook(YAML形式設定ファイル)」「冪等性」「モジュール構造」「処理管理単位(タスク)」「タスク実行後処理(ハンドラ)」「エージェントレス(SSH接続)」「対話的処理実行(アドホックコマンド)」について紹介します。

■関連する比較ページ

「Ansible」の主な特徴

■簡単インストール

Ansibleは各環境向けのインストールパッケージが提供されており、容易にインストールできます。

主な対象OS

・Red Hat Enterprise Linux
・CentOS
・Debian
・Ubuntu
・FreeBSD
・Mac OS X など

AnsibleはPython実装であるため、Python向けパッケージマネージャ「pip」経由でもインストールできます。

■シンプル構成

Ansibleは、Chef/Puppetと比較すると、Push型で構成上シンプルであるため、スモールスタートが可能です。

クライアント/サーバ型構成は必須ではなく、「リモート管理対象サーバ」に加えて、「ローカル環境」もAnsibleの管理対象にできます。

小規模環境からエンタープライズ環境にまで対応できますが、数台~十数台程度の小~中規模なサーバ管理に向いているとされています。

■Playbook(YAML形式設定ファイル)

Ansibleにおける一連の処理は「Playbook」という単位にまとめられ、YAML形式というシンプルなフォーマットで記述します。

Chefなどの他の構成管理ツールでは独自記述言語を採用しているため学習コストが高いという問題がありますが、Ansibleでは一般的によく利用されているYAML形式を採用することにより、高度なプログラミング知識は不要で、手順を列挙するだけで記述できます。「シンプルに記述できる」「可読性が高い」「学習が容易」「開発チームと運用チームの両方から分かりやすい」などのメリットがあります。

Playbookには、さまざまな処理命令を組み合わせて、「このサーバには、この処理を、このオプションで実行せよ」というように記述します。「変数使用」「別のPlaybook呼び出し」「条件分岐」「ループ処理」「同時実行」などの記述を行えます。

一方で、一般的な記述方法のYAML形式であるがゆえに、他の構成管理ツールと比較すると、複雑な処理を表現しにくいという面があり、「多段の条件分岐」「反復構造」を記述する場合には、複雑な表記になりやすいケースもあります。

■冪等性

AnsibleのPlaybookでは、管理対象サーバに対して「何を実行するのか」ではなく、「どのような状態があるべき姿なのか」ということを記述します。そのため、同じ処理を何回実行しても同じ結果となります。この性質のことを「冪等性(べきとうせい)」といいます。

Ansibleは、目的とするサーバ状態を設定できなかった段階で実行が失敗となる「fail-fast」設計となっています。Ansibleの実行に成功した場合、宣言通りのサーバ状態がセットアップされているという保証になります。

■モジュール構造

Ansibleは、モジュール構造が採用されています。一般的に使われる機能群として「コアモジュール」がデフォルトで搭載されており、特定用途特化モジュール群が「Extraモジュール」としてAnsibleによって管理されます。

Ansible自体が直接管理対象サーバに具体的な操作を行うことはありません。Ansibleがさまざまな機能を持つモジュールを実行させることで各種処理が実行されます。

「Extraモジュール」として、1300以上のモジュールが用意されており、目的のモジュールを利用できます。また、Pythonなどで独自モジュール開発も行えます。

主なモジュール

・ファイル配置
・サービス状態制御(サービス起動/停止)
・クラウドインフラ制御(AWS/Azure/Google Cloud Platform/OpenStack)
・ネットワーク機器制御(Cisco/Juniper/F5)
・ファイアウォール設定
・Playbook実行時ステータス通知(IRC/Slack) など

モジュールインデックス

利用できるモジュールはこちらのサイトで参照できます。

→Ansible →Docs →Module Index

■処理管理単位「タスク」

Ansibleでは、対象サーバに対する処理を「タスク」という単位で管理します。基本的に、1つのタスクには1つのモジュールを指定します。

タスク例

・「yum」モジュールを使用して「httpd」パッケージをインストールする
・「command」モジュールを使用して任意のコマンドを実行する など

■タスク実行後処理「ハンドラ」

「ハンドラ」とは、特定のタスクの実行後、あらかじめ指定しておいた処理を実行するための仕組みです。タスクと同様に、1つのハンドラには1つのモジュールを指定します。

タスクで、notify項目を設定することで、そのタスクの実行後にnotify項目で指定したハンドラが実行されます。

タスク例

・httpdインストール後に、Apache HTTP Server(httpd)の設定ファイルを作成する
・設定の変更後に、httpdを再起動する など

■エージェントレス(SSH接続)

ChefやPuppetは、管理対象サーバに「エージェント」と呼ばれる専用のソフトウェアをインストールしておく必要があります。

一方、Ansibleはエージェントレスで対象サーバを管理します。管理対象サーバにエージェントソフトウェアのインストールは不要です。

Ansibleサーバから管理対象サーバに対して、SSHによるリモートログインを行って各種操作を実行します。「パスワード認証」および「公開鍵認証」の両方に対応しています。そのため、「デーモンがアンインストールされていたためにシステムを管理できない」などの問題は発生しません。

管理対象サーバに必要なのは、「Python 2.4以降がインストールされていること」「AnsibleサーバからSSHでログインできること」の2点です。

対象がLinuxである場合、SSHサーバやPythonは多くのLinuxディストリビューションに標準で含まれているため、特に追加の設定を行う必要はなく、すぐにサーバ設定処理を開始できます。

■対話的処理実行「アドホックコマンド」

Ansibleでは、設定ファイルを用意せずに、コマンドラインで対話的に処理を実行できる「アドホックコマンド」を実行できます。

1回しか実行しない作業のためだけに手順を記述する必要はなく、「任意のコマンド」「任意のモジュール」をコマンドラインから実行できます。指定した複数のサーバで特定の処理を実行できます。

Ansible最新TOPICS

【OSS】開発者向けオープンソース自動化ツール4選---「Jenkins」「Cockpit」「Kubernetes」「Ansible」(2019年12月04日 14:18)

開発者向けのオープンソース自動化ツールを4点紹介。 ①継続的インテグレーション自動化ツール「Jenkins」 Jenkinsは、KubernetesやDockerを組み合わせてアプリケーションとサービスを展開する場合に有用で、自動化されたアプリケーションとサービスの構築と展開のためのプロンプトを作成できる。...

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

【データセンター / システム運用事業者向け】複雑化するハイブリッドクラウドの監視運用を効率化する最適解 ~AWS, Azure, GCPの統合監視と運用自動化~

クラウドサービスにおける膨大なデータのバックアップ課題 ~パッケージ化されたオンプレのバックアップシステムでコスト・品質の両立を手軽に実現~

マネージドサービス事業者の"サービス拡充"と"運用効率化"の両立 ~AWS,Azure,オンプレ…監視対象の拡大と、アラート対応・報告書作成などの業務効率化は、両立できるのか?~

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter