Red Hat Enterprise Linux への Ansible のインストール

Red Hat Enterprise LinuxBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、Red Hat Enterprise Linux (RHEL) システムに Ansible Core をインストールする方法を学びます。Ansible は、システムの管理と設定、アプリケーションのデプロイ、複雑な IT ワークフローのオーケストレーションを可能にする強力な自動化ツールです。

ansible-core パッケージをインストールするために、sudo 権限を持つ dnf パッケージマネージャーを使用します。ansible-core パッケージは、コア Ansible エンジンとコマンドラインツールを提供します。インストール後、バージョンを確認し、基本的なコマンドを実行して、Ansible が正しく動作していることを検証します。

これは、Red Hat Enterprise Linux システムを扱うシステム管理者や DevOps エンジニアにとって基本的なスキルです。

dnf を使用した Ansible Core のインストール

このステップでは、dnf パッケージマネージャーを使用して ansible-core パッケージをインストールします。Ansible Core は、自動化タスクに必要な ansibleansible-playbook、およびその他のコアコマンドラインツールを含む、基本的な Ansible エンジンを提供します。

dnf (Dandified YUM) パッケージマネージャーは、Red Hat Enterprise Linux でソフトウェアパッケージを管理するための標準ツールです。ソフトウェアのインストールには管理者権限が必要なため、sudo コマンドを使用する必要があります。

次のコマンドを実行して、自動確認付きで Ansible Core をインストールします。

sudo dnf install ansible-core -y

-y フラグは、すべてのプロンプトに自動的に「yes」と回答し、インストールを非対話的にします。システムは、テンプレート処理用の Jinja2 や YAML 処理用の PyYAML を含む、Python の依存関係とともに ansible-core をダウンロードしてインストールします。

パッケージの解決とインストールの進行状況を示す、次のような出力が表示されるはずです。

Updating Subscription Management repositories.
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package                  Arch   Version                Repository         Size
================================================================================
Installing:
 ansible-core             noarch 2.16.x-x.el9            rhel-9-appstream   xx M
Installing dependencies:
 python3-jinja2           noarch x.x.x-x.el9              rhel-9-appstream   xxx k
 python3-yaml             x86_64 x.x.x-x.el9              rhel-9-appstream   xxx k
 ...

Transaction Summary
================================================================================
Install  XX Packages

Complete!

Ansible インストールの検証

Ansible Core をインストールしたので、バージョンを確認し、基本的なコマンドラインツールが利用可能であることを確認して、インストールが成功したことを検証しましょう。

まず、次を実行して Ansible のバージョンを確認します。

ansible --version

このコマンドは、コアバージョン、Python バージョン、およびさまざまなコンポーネントの場所など、Ansible インストールに関する詳細情報を表示します。次のような出力が表示されるはずです。

ansible [core 2.14.18]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

各行の意味を理解しましょう。

  • ansible [core 2.14.18]: インストールされている Ansible Core のバージョンを表示します。
  • config file: デフォルト設定を含む、メインの Ansible 設定ファイルを指します。
  • configured module search path: Ansible がカスタムモジュールを探すディレクトリです。
  • ansible python module location: コア Ansible Python コードがインストールされている場所です。
  • ansible collection location: Ansible コレクション (パッケージ化されたモジュールとプラグイン) が保存されているディレクトリです。
  • executable location: ansible コマンドバイナリの実際の場所です。
  • python version: Ansible が使用する Python インタープリターのバージョンです。
  • jinja version: Ansible が動的コンテンツに使用するテンプレートエンジンバージョンです。
  • libyaml = True: 高速 YAML パーサーが利用可能であり、パフォーマンスが向上することを確認します。

これにより、Ansible が正しくインストールされ、使用できる状態であることが確認されます。次に、ansible-playbook コマンドが利用可能であることも確認しましょう。

ansible-playbook --version

Ansible プレイブックの実行に不可欠な ansible-playbook ツールの同様のバージョン情報が表示されるはずです。

簡単なコマンドで Ansible をテスト

このステップでは、ローカルシステムに対して簡単なコマンドを実行して、Ansible のインストールをテストします。プロジェクトディレクトリに移動し、事前設定されたインベントリファイルを使用して、Ansible アドホックコマンドを実行します。

プロジェクトディレクトリに移動し、基本的な ping 機能テストを行います。

cd /home/labex/project
ansible localhost -m ping

ping モジュールは、実際には ICMP パケットを送信しません。代わりに、Ansible がターゲットに接続して Python コードを実行できることを検証します。成功した応答は次のようになります。

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

この出力を分解してみましょう。

  • localhost | SUCCESS: コマンドが localhost ターゲットで正常に実行されたことを示します。
  • ansible_facts: 実行中に検出されたシステム情報が含まれています。
  • discovered_interpreter_python: Ansible が見つけて使用する Python インタープリターのパスです。
  • changed: false: システムに変更が加えられていないことを示します (ping は読み取り専用です)。
  • ping: "pong": Ansible の接続を確認する古典的な応答です。

"pong" 応答は、Ansible が正しく動作し、ターゲットシステムと通信できることを確認します。

また、setup モジュールを使用してシステム情報を収集するテストも行いましょう。

ansible localhost -m setup -a "filter=ansible_distribution*"

このコマンドは、setup モジュールを使用してシステムファクトを収集し、具体的にはディストリビューション情報をフィルタリングします。Red Hat Enterprise Linux システムに関する詳細を含む出力が表示されるはずです。

localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "RedHat",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_search_string": "Red Hat",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "9",
        "ansible_distribution_release": "Plow",
        "ansible_distribution_version": "9.6",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

システムファクト出力の理解:

  • ansible_distribution: Linux ディストリビューション名 (RedHat)
  • ansible_distribution_file_parsed: Ansible がディストリビューションファイルを正常に読み取ったかどうか
  • ansible_distribution_file_path: ディストリビューション情報を含むファイル
  • ansible_distribution_file_search_string: ディストリビューションを識別するために使用されるテキストパターン
  • ansible_distribution_file_variety: ディストリビューションファミリー (RedHat ファミリー)
  • ansible_distribution_major_version: メジャーバージョン番号 (9)
  • ansible_distribution_release: リリースコードネーム (Plow)
  • ansible_distribution_version: 完全なバージョン番号 (9.6)
  • discovered_interpreter_python: Ansible によって検出された Python インタープリター

これにより、Ansible がターゲットホストからシステム情報を正常に収集できることが確認されます。これは、システムの特性に基づいて条件付き自動化を作成するために不可欠です。

利用可能な Ansible モジュールを探索

Ansible には、さまざまな自動化タスクに対応する数百の組み込みモジュールが付属しています。インストール直後に利用できる機能について理解するために、利用可能なモジュールの一部を調べてみましょう。

利用可能なモジュールの一覧を表示するには、次を実行します。

ansible-doc -l | head -20

ansible-doc -l コマンドは、利用可能なすべてのモジュールを一覧表示し、head -20 を使用すると最初の 20 個のモジュールが表示されます。これにより、Ansible で利用できる広範な自動化機能の概要がわかります。次のような出力が表示されます。

ansible.builtin.add_host               Add a host (and alternatively a grou...
ansible.builtin.apt                    Manages apt-packages
ansible.builtin.apt_key                Add or remove an apt key
ansible.builtin.apt_repository         Add and remove APT repositories
ansible.builtin.assemble               Assemble configuration files from fr...
ansible.builtin.assert                 Asserts given expressions are true
ansible.builtin.async_status           Obtain status of asynchronous task
ansible.builtin.blockinfile            Insert/update/remove a text block su...
ansible.builtin.command                Execute commands on targets
ansible.builtin.copy                   Copy files to remote locations
ansible.builtin.cron                   Manage cron.d and crontab entries
ansible.builtin.debconf                Configure a .deb package
ansible.builtin.debug                  Print statements during execution
ansible.builtin.dnf                    Manages packages with the `dnf' pack...
ansible.builtin.dpkg_selections        Dpkg package selection selections
ansible.builtin.expect                 Executes a command and responds to p...
ansible.builtin.fail                   Fail with custom message
ansible.builtin.fetch                  Fetch files from remote nodes
ansible.builtin.file                   Manage files and file properties
ansible.builtin.find                   Return a list of files based on spec...

モジュールリスト形式の理解:

  • ansible.builtin.: これらが Ansible Core に付属する組み込みモジュールであることを示します。
  • Module name (モジュール名): プレイブックまたはアドホックコマンドでモジュールを呼び出すときに使用する名前です。
  • Description (説明): モジュールの機能の簡単な説明です。

よく使用する重要なモジュールをいくつか紹介します。

  • command (コマンド): ターゲットシステムでシェルコマンドを実行します。
  • copy (コピー): 制御マシンからリモートホストにファイルをコピーします。
  • dnf: Red Hat システムでパッケージをインストール、更新、または削除します。
  • file (ファイル): ディレクトリを作成し、権限を設定し、またはファイルプロパティを管理します。
  • debug (デバッグ): プレイブックの実行中にメッセージを出力してトラブルシューティングを行います。

特定のモジュールの詳細なドキュメントを取得するには、モジュール名とともに ansible-doc コマンドを使用できます。たとえば、copy モジュールについて学ぶには、次のようにします。

ansible-doc copy

これにより、copy モジュールの包括的なドキュメントが表示され、例やパラメータの説明が含まれます。ansible-doc コマンドは、任意の Ansible モジュールの詳細なドキュメントを提供し、さまざまな自動化機能を簡単に学習できます。読み終わったら、q を押してドキュメントビューアを終了します。

まとめ

この実験では、Red Hat Enterprise Linux システムに Ansible Core をインストールし、検証する方法を正常に学習しました。達成した内容は次のとおりです。

  1. Ansible Core のインストール: 公式の Red Hat リポジトリから、sudo dnf install ansible-core -y コマンドを使用して、コア Ansible パッケージとその依存関係をインストールしました。

  2. インストールの検証: ansible コマンドと ansible-playbook コマンドの両方のバージョンを確認することにより、Ansible が正しくインストールされていることを確認しました。

  3. 基本的な機能のテスト: インストールが正しく動作することを確認するために、次のような簡単な Ansible コマンドを実行しました。

    • ping モジュールを使用して接続性をテストする
    • setup モジュールを使用してシステムファクトを収集する
  4. 利用可能なモジュールの探索: ansible-doc を使用して、Ansible モジュールの広範なライブラリを発見し、ドキュメントを読む方法を学習しました。

これで、RHEL に完全に機能する Ansible インストールが完了し、インフラストラクチャの自動化を開始するために必要な基本的なコマンドを理解できました。この基盤は、プレイブックの作成、インベントリの管理、複雑な自動化ワークフローの実装など、より高度な Ansible トピックの準備となります。