Ansibleは各環境向けのインストールパッケージが提供されており、容易にインストールできます。
・Red Hat Enterprise Linux
・CentOS
・Debian
・Ubuntu
・FreeBSD
・Mac OS X など
AnsibleはPython実装であるため、Python向けパッケージマネージャ「pip」経由でもインストールできます。
Ansibleは、Chef/Puppetと比較すると、Push型で構成上シンプルであるため、スモールスタートが可能です。
クライアント/サーバ型構成は必須ではなく、「リモート管理対象サーバ」に加えて、「ローカル環境」もAnsibleの管理対象にできます。
小規模環境からエンタープライズ環境にまで対応できますが、数台~十数台程度の小~中規模なサーバ管理に向いているとされています。
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を再起動する など
ChefやPuppetは、管理対象サーバに「エージェント」と呼ばれる専用のソフトウェアをインストールしておく必要があります。
一方、Ansibleはエージェントレスで対象サーバを管理します。管理対象サーバにエージェントソフトウェアのインストールは不要です。
Ansibleサーバから管理対象サーバに対して、SSHによるリモートログインを行って各種操作を実行します。「パスワード認証」および「公開鍵認証」の両方に対応しています。そのため、「デーモンがアンインストールされていたためにシステムを管理できない」などの問題は発生しません。
管理対象サーバに必要なのは、「Python 2.4以降がインストールされていること」「AnsibleサーバからSSHでログインできること」の2点です。
対象がLinuxである場合、SSHサーバやPythonは多くのLinuxディストリビューションに標準で含まれているため、特に追加の設定を行う必要はなく、すぐにサーバ設定処理を開始できます。
Ansibleでは、設定ファイルを用意せずに、コマンドラインで対話的に処理を実行できる「アドホックコマンド」を実行できます。
1回しか実行しない作業のためだけに手順を記述する必要はなく、「任意のコマンド」「任意のモジュール」をコマンドラインから実行できます。指定した複数のサーバで特定の処理を実行できます。
開発者向けのオープンソース自動化ツールを4点紹介。 ①継続的インテグレーション自動化ツール「Jenkins」 Jenkinsは、KubernetesやDockerを組み合わせてアプリケーションとサービスを展開する場合に有用で、自動化されたアプリケーションとサービスの構築と展開のためのプロンプトを作成できる。...
OSS×Cloud ACCESS RANKING