マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Ansible


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Ansible」とは
「Ansible」基本情報
■概要
Ansible(アンシブル)とは構成管理ツールです。多数の構築管理対象に対するアプリケーションとシステムの導入を容易にするシンプルなIT環境構築自動化プラットフォームです。
■構成管理ツールとは
構成管理ツールとは、多数のサーバに対して統一的な制御を行い、環境構築を行うツールです。
あらかじめ作成した設定ファイルに従って「ソフトウェアインストール」「設定ファイル修正」「サービス起動/停止」「ネットワーク設定」などのサーバの各種設定を自動的に実行します。
構成管理ツールのメリット
①環境構築時間の大幅削減
②手動オペレーションによるミス発生可能性の低減
③作業漏れの低減
④直接ログインする機会を最小限にすることによるセキュリティの向上
代表的な構成管理ツールとして「Ansible」「Chef」「Puppet」などがあります。
■Ansibleとは
Ansibleは、「設定ファイルがシンプル」「使いやすい」「管理対象サーバへのエージェントソフトウェアインストール不要」など、最小限の手間で各種設定を自動化できる特徴があります。
Ansibleでは、Playbook(YAML形式テキストファイル)に作業内容をタスクとして記述し、それをAnsibleに実行させることにより、さまざまな処理を実現できます。
「構成管理機能」として、「サーバ構成管理」「ネットワーク設定」「ロードバランサー設定」「クラウドプロビジョニング(クラウドインフラ設定)」などを行えます。
「デプロイ機能」も有しており、「サーバ上に任意のファイルを配置」「パッケージインストール(アプリケーション展開)」なども行えます。
Ansibleは、システムが稼働するインフラを含む全体を構築できる「マルチノードオーケストレーションツール」として活用できます。
■経緯
Ansible社は、2015年に、RedHat社に買収されています。
■ユースケース
Ansibleは「Red Hat Enterprise Linux」環境などにおいて、「アプリケーションデプロイ」「ソフトウェアデリバリー迅速化」「OpenStackインストール自動化」「コンテナ導入促進」などに利用されています。
■オフィシャルサイト情報
オフィシャルサイト
ライセンス情報
Ansibleのライセンスは「GNU General Public License v3.0」です。
詳細について、こちらを参照ください。
→GitHub →ansible / ansible →COPYING
ダウンロード
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
「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では、対象サーバに対する処理を「タスク」という単位で管理します。基本的に、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のエコシステムとして、構成管理をサポートするツールが存在します。
■ロール共有「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の管理対象を選択できます。
参考元サイト
- GitHub →ansible / ansible
- Ansible →Ansible Documentation
- Qiita →Ansibleをはじめる人に。
- さくらのナレッジ →エージェントレスでシンプルな構成管理ツール「Ansible」入門
- Wikipedia →Ansible
- Think IT →連載「注目の構成管理ツールAnsibleを徹底活用する」 →構成管理ツールとしてAnsibleを選ぶべき理由
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク2位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク3位🏆
【OSS情報アーカイブ】NetBSD - 🏆ランク4位🏆
【OSS情報アーカイブ】nano - 🏆ランク5位🏆
【OSS情報アーカイブ】Cyrus IMAP - 🏆ランク6位🏆
【無料で使える】「 ファイアウォール 」ソフトウェアまとめ - 🏆ランク7位🏆
【OSS情報アーカイブ】K-9 Mail - 🏆ランク8位🏆
【OSS情報アーカイブ】fping - 🏆ランク9位🏆
【OSS情報アーカイブ】Snort - 🏆ランク10位🏆
【OSS情報アーカイブ】Red Hat Enterprise Linux