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

AnsibleBeginner
オンラインで実践に進む

はじめに

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

sudo 権限を持つ dnf パッケージマネージャーを使用して、Ansible のコアエンジンとコマンドラインツールを提供する ansible-core パッケージをインストールします。インストール後、バージョンを確認し、基本的なコマンドを実行することで、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 Playbook を実行するために不可欠な ansible-playbook ツールについても、同様のバージョン情報が表示されるはずです。

単純なコマンドによる Ansible のテスト

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

プロジェクトディレクトリに移動し、基本的な ping 機能をテストします。結果をファイルに保存することで、後で確認できるようにし、ステップの検証ツールが結果を確実に確認できるようにします。

cd /home/labex/project
ansible localhost -m ping | tee ping-output.txt

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*" | tee setup-output.txt

このコマンドは 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 | tee module-list.txt

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 に付属する組み込みモジュールであることを示します。
  • モジュール名: Playbook やアドホックコマンドでモジュールを呼び出すときに使用する名前です。
  • 説明: モジュールが何を行うかの簡単な説明です。

よく使用する重要なモジュールには以下のようなものがあります。

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

特定のモジュールの詳細なドキュメントを取得するには、ansible-doc コマンドにモジュール名を指定して使用します。コマンドが非対話形式で実行され、後で確認できるように、出力をファイルにリダイレクトします。例えば、copy モジュールについて学ぶには以下のようにします。

ansible-doc copy | tee copy-doc.txt

これにより、copy モジュールの包括的なドキュメント(例やパラメータの説明を含む)が表示され、同時に copy-doc.txt にコピーが保存されます。ansible-doc コマンドは、あらゆる Ansible モジュールの詳細なドキュメントを提供するため、さまざまな自動化機能の使い方を簡単に学ぶことができます。

まとめ

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

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

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

  3. 基本機能のテスト: 以下の操作を含む、単純な Ansible コマンドを実行してインストールが正しく動作することを確認しました。

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

これで、RHEL 上に完全に機能する Ansible 環境が構築され、インフラストラクチャの自動化を開始するために必要な基本コマンドを理解できました。この基盤により、Playbook の作成、インベントリの管理、複雑な自動化ワークフローの実装といった、より高度な Ansible トピックに進む準備が整いました。