Ansible(アンシブル)とは構成管理ツールです。多数の構築管理対象に対するアプリケーションとシステムの導入を容易にするシンプルなIT環境構築自動化プラットフォームです。

オープンソースの運用管理・運用自動化/Ansibleとは

Ansible(アンシブル)とは構成管理ツールです。多数の構築管理対象に対するアプリケーションとシステムの導入を容易にするシンプルなIT環境構築自動化プラットフォームです。

目次

「Ansible」基本情報
■概要
・構成管理ツールとは
・Ansible基本説明
・経緯
■主な特徴
・簡単インストール
・シンプル構成
・Playbook(YAML形式設定ファイル)
・冪等性
・モジュール構造
・処理管理単位「タスク」
・タスク実行後処理「ハンドラ」
・エージェントレス(SSH接続)
・対話的処理実行「アドホックコマンド」
■Ansibleエコシステム
・ロール共有「Ansible-Galaxy」
・有償版Webベース管理ツール「Ansible Tower」
・コンテナ構成管理「Ansible-Container」
・テストツール「TestInfra」
■同様製品
■オフィシャルサイト
・オフィシャルサイト
・ライセンス情報
・ダウンロード

「Ansible」基本情報

■概要

Ansible(アンシブル)とは構成管理ツールです。多数の構築管理対象に対するアプリケーションとシステムの導入を容易にするシンプルなIT環境構築自動化プラットフォームです。

構成管理ツールとは

構成管理ツールとは、多数のサーバに対して統一的な制御を行い、環境構築を行うツールです。

あらかじめ作成した設定ファイルに従って「ソフトウェアインストール」「設定ファイル修正」「サービス起動/停止」「ネットワーク設定」などのサーバの各種設定を自動的に実行します。

構成管理ツールのメリット
①環境構築時間の大幅削減
②手動オペレーションによるミス発生可能性の低減
③作業漏れの低減
④直接ログインする機会を最小限にすることによるセキュリティの向上

代表的な構成管理ツールとして「Ansible」「Chef」「Puppet」などがあります。

Ansible基本説明

Ansibleは、「設定ファイルがシンプル」「使いやすい」「管理対象サーバへのエージェントソフトウェアインストール不要」など、最小限の手間で各種設定を自動化できる特徴があります。

Ansibleでは、Playbook(YAML形式テキストファイル)に作業内容をタスクとして記述し、それをAnsibleに実行させることにより、さまざまな処理を実現できます。

「構成管理機能」として、「サーバ構成管理」「ネットワーク設定」「ロードバランサー設定」「クラウドプロビジョニング(クラウドインフラ設定)」などを行えます。

「デプロイ機能」も有しており、「サーバ上に任意のファイルを配置」「パッケージインストール(アプリケーション展開)」なども行えます。

Ansibleは、システムが稼働するインフラを含む全体を構築できる「マルチノードオーケストレーションツール」として活用できます。

経緯

Ansible社は、2015年に、RedHat社に買収され、「Red Hat Enterprise Linux」環境における「アプリケーションデプロイ」「ソフトウェアデリバリー迅速化」「OpenStackインストール自動化」「コンテナ導入促進」などに利用されています。

TOPに戻る

■主な特徴

簡単インストール

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エコシステム

Ansibleのエコシステムとして、構成管理をサポートするツールが存在します。

ロール共有「Ansible-Galaxy」

「Ansible-Galaxy」は、Playbookの流用可能な処理を「ロール」という単位で分離し、ロールを共有できる機能を提供します。

「企業内に閉じたロール共有」や「GitHubを利用した一般ロール共有」を行えます。

有償版Webベース管理ツール「Ansible Tower」

「Ansible Tower」は、RedHat社が商用プロプライエタリ製品として提供するAnsible用Webベース管理ツールです。

「Ansibleとしてのホスト管理」「Playbook単位での権限管理」などの機能を提供します。

コンテナ構成管理「Ansible-Container」

「Ansible-Container」は、コンテナ構成管理機能を提供します。コンテナ構成管理にAnsibleとYAMLでの平易で明快な記述を導入できます。

テストツール「TestInfra」

「TestInfra」は、「結果的にそこで動作するシステムの振る舞いの正しさ」を確認するためのテストツールです。テスト対象の指定にAnsibleの管理対象を選択できます。

TOPに戻る

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Chef」「Puppet」など。

TOPに戻る

■オフィシャルサイト

オフィシャルサイト

→GitHub →ansible / ansible

ライセンス情報

Ansibleのライセンスは「GNU General Public License v3.0」です。

詳細について、こちらを参照ください。
→GitHub →ansible/COPYING

ダウンロード

→GitHub →ansible / ansible

TOPに戻る

 

参考元サイト

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Ansible最新TOPICS

SIの労働生産性向上を目指す、ITエンジニアのためのコミュニティ「IaC活用研究会」キックオフイベント(2017年12月15日 09:45)

「IaC活用研究会」では、参加するエンジニアが自身や各社の「IaC」や生産性向上の取り組みを共有するとともに、「IaC」関連ツールに関する技術や知識、ノウハウを習得しエンジニアの生産性の向上に寄与することで、働き方の変化を促していくことを目的とします。同じ思いをもって一緒に活動をしていただける方をお待ちしております。

イベント情報

無料資料プレゼント

第2回「多要素認証の種類と方法」

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

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

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



  • 勉強会
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter