マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Ansible

【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インストール自動化」「コンテナ導入促進」などに利用されています。

■オフィシャルサイト情報

オフィシャルサイト

→GitHub →ansible / ansible

ライセンス情報

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

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

ダウンロード

→GitHub →ansible / ansible

■同様製品

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

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

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

「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の管理対象を選択できます。

 

参考元サイト

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

この記事のタグ一覧

おすすめの記事

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 経済産業省:コンテンツ制作のための 生成AI 利活用ガイドブック 」とは?📘

経済産業省による「 生成AI 利活用ガイドブック 」は、企業やクリエイター向けに、安心して「生成AI」を利用するための、「指針」「実例」「注意点」を明示しています。「業務効率化」や「新しいアイデア創出」の支援を目的としています。

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 2029年問題 」とは?📅

「 2029年問題 」とは、高校でのデジタル教育改革により、新入社員と既存社員間でデジタルスキル格差が拡大する懸念を指します。企業は早急に対応が求められています。この格差は、企業競争力や業務効率にも、影響を及ぼす可能性があります。

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

デジタル寺田の3分用語解説

2024.11.18

【デジタル寺田の3分用語解説】「 VMWare 問題 」とは?🖥️

「 VMWare 」の仮想化技術は、「ITインフラの効率化」に大きく貢献する技術ですが、Broadcomによる買収後のライセンス変更が大きな問題として注目されています。柔軟で慎重な契約見直しが今後の鍵となります。