Ansibleコントロールノードのインストールと構成 - パート2
前のトピックでは、基本的なAnsibleの用語と基本概念について学びました。このトピック(Ansibleシリーズのパート2)では、RHEL 8にAnsible制御ノードをインストールおよび構成する方法を示します。
私たちのセットアップでは、1つのAnsibleサーバーと2つのリモートLinuxノードを使用します:
Control Node 1: RHEL 8 Server IP: 192.168.0.108 Ansible Server
Managed Host 1: Debian 10 IP: 192.168.0.15 Webserver
Managed Host 2: CentOS 8 IP: 192.168.0.200 Database Server
Ansibleコントロールノードとは何ですか?
制御ノードは、AnsibleがインストールされたLinuxサーバーで、リモートホストやノードを管理するために使用されます。これらのリモートシステムは管理されたホストまたは管理されたノードとして知られています。
上記の設定では、コントロールノードはRHEL 8サーバーで、ここにAnsibleをインストールし、Debian 10およびCentOS 8が管理対象ホストです。
注意:Ansibleは制御ノードにのみインストールされており、管理ホストにはインストールされていません。
ステップ1:Python 3のインストール
デフォルトでは、RHEL 8 には Python 3 が付属しており、サーバーにインストールされている Python のバージョンを確認するには、次のコマンドを実行します。
# python3 -V
もし何らかの理由でPython3がインストールされていない場合は、以下のdnfコマンドを使用してインストールしてください。
# dnf install python3
RHEL 8 システムに複数のバージョンのPythonが存在する場合、次のコマンドを実行することでPython 3をデフォルトのPythonバージョンとして設定できます。
# alternatives --set python /usr/bin/python3
ステップ2:公式RedHatリポジトリを有効にする
Python3をインストールした後、以下のようにAnsibleのRedHat公式リポジトリが有効になっていることを確認してください。
# subscription-manager repos --enable ansible-2.8-for-rhel-8-x86_64-rpms
注意: 上記のコマンドを機能させるために、RHEL 8をRedHatサブスクリプションに登録していることを確認してください。
ステップ3:RHEL 8にAnsibleをインストールする
コントロールノードであるRHEL 8システムにAnsibleをインストールするには、コマンドを実行してください。
# dnf install ansible -y
インストールが完了したら、コマンドを実行してインストールされたAnsibleのバージョンを確認できます。
# ansible --version
ステップ4: 固定ホストインベントリファイルの作成
これまでのところ、私たちは制御ノードであるRHEL 8サーバーにansibleを正常にインストールしました。制御ノードによって管理されるリモートノードは、インベントリファイルと呼ばれるファイルに定義する必要があります。インベントリファイルは、制御ノードに存在する平文のテキストファイルで、リモートホストのホスト名またはIPアドレスで構成されています。
静的ホストファイルは、IPアドレスまたはホスト名によって定義された管理ノードのリストを含むプレーンテキストファイルです。/etc/ansible/ディレクトリにhostsという静的ファイルを作成しましょう。
# vi /etc/ansible/hosts
次に、管理対象ホストのグループを定義します。このトピックの導入部で見たように、私たちは2つの管理対象ホストを持っています。この設定から、静的ホストファイルは次のように定義されます。
[webserver]
192.168.0.15
[database_server]
192.168.0.200
在庫ファイルを保存して終了します。
管理されたホストの一覧を表示するには、次のように実行します:
# ansible all -i hosts --list-hosts
これまでのところ、コントロールノードにAnsibleをインストールし、コントロールノードにある静的なホストファイルに管理対象ホストを定義することができました。
次に、リモートまたは管理されたホストをどのように管理または制御できるかを見ていきます。
ステップ5: リモートノードに接続するためのAnsibleコントロールノードの設定
リモートホストシステム(Debian 10およびCentOS 8)を管理するために、Ansibleコントロールノード(RHEL 8)にはパスワードなしのSSH認証を設定する必要があります。これを実現するためには、SSHキーのペアを生成し、公開キーをリモートノードに保存する必要があります。
Ansibleコントロールノードで、通常のユーザーとしてログインし、コマンドを実行してSSHキーのペアを生成します。
# su tecmint
ssh-keygen
次に、パブリックSSHキーをリモートノードにコピーします。
$ ssh-copy-id [email (For Debian 10 node)
ssh-copy-id [email (For CentOS 8 node)
すべてのリモートノードに公開鍵を追加したので、アクセス可能であることを確認するために、Ansibleコントロールノードからpingコマンドを発行します。
$ ansible -m ping all
上記の出力から、pingコマンドが成功し、すべてのノードへの到達性をテストできたことが明確にわかります。
結論
このガイドでは、RHEL 8を実行している制御ノードにAnsibleを正常にインストールし、設定しました。その後、静的ホストファイルでリモートホストを定義し、SSHのパスワードなし認証を設定することで、管理対象ホストに接続し制御するように制御ノードを構成しました。









