Ansibleは、クラウドやデータセンターインフラストラクチャ全体で変更を管理するための最も広く使用されているDevOpsツールです。この記事では、Ansibleのしくみと、それを使い始める方法について概要を説明します。
Ansibleとは何か?
Ansibleは、複数のサーバーにアプリケーションやシステムの設定を簡単に展開するための自動化プラットフォームツールです。Linuxサービスの開始、数十人のLinuxユーザーの作成、パスワードの更新など、さまざまな用途に使用できます。
Ansibleは、エージェントレスのソリューションで、Secure Shell Host(SSH)プロトコルを介してマシンを管理します。データベースは必要ですが、バックグラウンドサービス(デーモン)は使用しません。
Ansibleは、組み込みのアドホックコマンドとAnsibleプレイブックを使用してソフトウェアを展開したりコマンドを実行したりします。また、Ansibleにはリモートノードを展開または設定するための数百のモジュールが含まれています。
Ansibleのしくみ
これで、Ansibleが何であるかについて基本的な考えがつかめたでしょう。しかし、Ansibleが機能するためには、4つのコンポーネントが必要です。
- Ansibleコントロールノード、またはAnsibleコントローラーホストとしても知られているのは、Ansibleがインストールされているサーバーです。このノードは、リモートノード上での構成やソフトウェアの展開や管理のために、AnsibleのアドホックコマンドやAnsibleプレイブックをすべて実行します。
- Ansibleリモートノード、またはAnsible管理ノードとしても知られているのは、AnsibleのアドホックコマンドやAnsibleプレイブックを使用してアプリケーションや構成を展開するサーバーまたはネットワークデバイスです。これらはまた、Ansibleホストとしても知られています。
- AnsibleインベントリAnsibleインベントリは、Ansibleコントローラーホストまたはコントロールノード上のファイルで、すべてのリモートホストまたは管理ノードのリストが含まれています。
- Ansibleモジュール、またはAnsibleコアモジュールとしても知られているのは、コマンドラインまたはプレイブックタスクから使用できるコードプラグインまたはライブラリプラグインです。通常、Ansibleは各モジュールをリモート管理ノードで実行します。
Ansibleを使用する理由は?
IT業界では、同じタスクを繰り返し行うことがよくあります。もし一度問題を解決し、その解決策を自動化できたらどうでしょうか? Ansibleは、リモートノード上でソフトウェアを管理および展開するための構成管理ツールであり、簡単かつ効率的に操作できます。
Ansibleには、リモートサーバーを管理する際に使用できる数百のモジュールがあります。Ansibleモジュールは、以下の2つに分類されます:
- Ansibleコアモジュール(またはansible-core)は、前述したようにAnsibleの主要な構成要素およびアーキテクチャであり、Ansibleチームによって所有および管理され、常にAnsible自体と共に提供されます。
- Ansibleコレクションは、Ansible用の配布フォーマットであり、プレイブック、ロール、モジュール、およびプラグインをパッケージ化および配布するために使用できます。典型的なコレクションは関連するユースケースに対応します。コレクションを作成し、Ansible Galaxyに公開することが可能です。
? Ansible Galaxyは、ユーザーがAnsibleのモジュールを共有したり、インストールしたり、作成したり、管理したりすることができるGalaxyウェブサイトを指します。
Ansibleの使用ケース
Ansibleの主なユースケースについて尋ねると、Ansibleができることは数百に及ぶため、完全なリストを書くことはできません。基本的なタスクから始まり、リモートノードでのサービス再起動など、様々なことができます。Tomcatアプリケーションのデプロイメントなど。
Ansibleが有用であると証明されているユースケースのいくつかを見てみましょう:
- 異なるシステムでタスクやPlaybookを単一のコマンドで実行する必要がある場合は、Ansible変数を使用できます。
- 複数のシステムからデータを取得する場合は、Ansibleファクトを使用できます。 Ansibleファクトは、ターゲットノードから収集されたデータがコントローラーノードに返されます。
- Ansible Vaultは、パスワードなどの機密データへのアクセスや、セキュアなパスワードでアプリケーションをデプロイするために使用できます。
- Ansibleには、外部データストアからデータを取得するためのデータベースやAPIにアクセスするためのlookups機能があります。
Ansibleのインストールオプション
Ansibleは複数のオペレーティングシステムでサポートされている簡単にインストールできるツールです。さっそく、Ansibleがサポートするオペレーティングシステムを見てみましょう。
- RHEL、CentOS、Fedora、Ubuntu、Debian、Gentoo with portage、FreeBSD、macOS、Solaris、Arch Linux、Slackware Linux、Clear Linux に Ansible をインストールできます。
- Python の Pip パッケージインストーラー を使用して Ansible をインストールできます。
Windows 上で Ansible を実行できますか?
Windows に Ansible をインストールすることはできませんが、Windows ベースのオペレーティングシステムを管理するために使用できます。以下はいくつかの可能な使用例です:
- Windows ホストでの Ansible のファクト収集。
- MSI のインストールおよびアンインストール。
- Windows 機能の有効化/無効化。
- Windows サービスの起動、停止、および管理。
Ansible 構成管理
最初の Ansible コマンドを実行する前に、Ansible Controller ホスト、Ansible インベントリ、Ansible プレイブックなどをどのように構成するかを知っておく必要があります。
Ansible インベントリ ファイルには、Ansible がリソースを展開または管理する際に使用するすべての Ansible リモートノードまたはグループ化されたリモートノードのリストが含まれています。
Ansible インベントリを保存する方法には2つあります:
- デフォルトでは、Ansible インベントリは /etc/ansible/hosts ファイルに保存されています。
- コマンドラインで -I <path> オプションを指定することで、カスタマイズされたパスを使用することもできます。
また、Ansible インベントリを構成する方法には2つあります。
- INI形式: INIファイルは、異なるグループにホストを割り当てるために角括弧内のグループ名で構成される構成ファイルです。以下の例では、server1.abc.com はグループに割り当てられていません。ただし、server3.abc.com と server4.abc.com はGroup1の一部です。
server1.abc.com [Group1] server3.abc.com server4.abc.com
- YAML形式: Ansibleインベントリを宣言する別の方法として、YAMLを使用することができます。YAMLは、JSONのスーパーセットであり、別のデータ直列化言語です。YAML形式の構文は以下で定義されています。
上述のINI形式コードについて説明した内容と同様に、ここでは2つのサーバ(server3.abc.com および server4.abc.com)がGroup1のメンバーです。
all: hosts: server1.abc.com children: Group1: hosts: server3.abc.com server4.abc.com
Ansibleアドホックコマンド
AnsibleのリモートノードでLinuxのサービスの再起動や起動などの素早い作業を行う必要がある場合、Ansible Ad hocコマンドが利用できます。アドホックコマンドは、リモートノードで単一のコマンドを素早く効率的に実行する方法です。
例えば、AnsibleのAd hocコマンドを使用して、すべてのAnsibleリモートノードにpingを送信するには、以下のコマンドを実行する必要があります。ここで、「all」はAnsibleインベントリで構成されたすべてのホストを表し、-mはpingモジュールと一緒に使用されるフラグです。
ansible all -m ping

Ansibleプレイブックとは何ですか?
複数のAnsibleタスクを同時に実行する必要がある場合は、Ansibleプレイブックを使用する必要があります。
Ansibleプレイブックは、複雑なアプリケーションを展開することができ、再利用可能でシンプルな構成管理を提供します。また、複数のマシン展開をサポートし、複数のタスクを何度も実行できます。
AnsibleプレイブックはYAML形式で記述され、順次実行される複数のタスクが含まれています。Ansibleプレイブックの例を以下に示します。
この例では、Ansibleプレイブックには2つのAnsibleタスク(1と2)が含まれており、リモートノードにApacheとJavaをインストールします。
# Playbook apache.yml --- - name: Ansible Playbook Examples hosts: servers # Define all the hosts remote_user: ubuntu # Remote_user is ubuntu # Defining the Ansible tasks tasks: - name: Ansible Task 1 apt: name: httpd state: latest tasks: - name: Ansible Task 2 apt: name: open-jdk state: latest
Ansible Tower:Webベースのソリューション
Ansibleの動作方法について理解できましたが、管理やインストールをせずに使用したい場合はどうすればよいでしょうか?
AnsibleはLinuxマシンでホストされています。ただし、Ansibleをローカルで管理する手間をかけずにクラウドバージョンを使用したい場合は、Webベースの解決策であるAnsible Towerを使用します。クラウドバージョンでは、引き続きモジュールを使用してリモートマシンを構成または管理し、AnsibleコマンドやAnsible Playbookを実行できます。
Ansible Towerには、すべてのユーザーのアクセス権を制御する機能があり、SSHの認証情報やAnsibleのインベントリの管理も行います。また、すべてのジョブをログ記録し、Lightweight Directory Access Protocol(LDAP)と優れたブラウズ可能なREST APIとも良好に統合されています。Ansible Towerには、リモートノードで複数のタスクを実行する必要がある場合にサーバーやインスタンスをスケーリングできる機能も備わっています。
結論
Ansibleは多くの機能を持つ無料のツールです。このガイドを参照すると、この機能豊富なツールで何が可能かが理解できるようになります!構成の管理、さまざまなAnsibleモジュールの使用、Ad hocコマンドの実行、Ansibleプレイブックの使用、および数十種類のソフトウェアツールの展開など、Ansibleは最も広く使用されている自動化ツールの1つです。
今、Ansibleの動作原理について良い理解ができましたので、それを利用して何を展開する予定ですか?
関連記事: