Ansibleコントロールノードをインストールして構成する方法-パート2


前のトピックでは、基本的なAnsibleの用語と基本的な概念について学習します。このトピック(Ansibleシリーズのパート2)では、RHEL8に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がインストールされているLinuxサーバーであり、リモートホストまたはノードの管理に使用されます。これらのリモートシステムは、管理対象ホストまたは管理対象ノードと呼ばれます。

上記のセットアップでは、制御ノードはAnsibleがインストールされるRHEL 8サーバーであり、Debian10とCentOS8は管理対象ホストです。

注:Ansibleはコントロールノードにのみインストールされ、管理対象ホストにはインストールされません。

ステップ1:Python3をインストールする

デフォルトでは、RHEL8にはPython3が付属しており、を実行することでサーバーにインストールされているPythonのバージョンを確認できます。

# python3 -V

何らかの理由でPython3がインストールされていない場合は、次のdnfコマンドを使用してインストールしてください。

# dnf install python3

RHEL 8システムに複数のバージョンのPythonが存在する場合は、を実行してPython3をデフォルトの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

注:上記のコマンドを機能させるには、RHEL8をRedHatサブスクリプションに登録していることを確認してください。

ステップ3:RHEL8にAnsibleをインストールする

RHEL 8システムであるコントロールノードにAnsibleをインストールするには、コマンドを実行します。

# dnf install ansible -y

インストールしたら、コマンドを実行して、インストールされているAnsibleのバージョンを確認できます。

# ansible --version

ステップ4:静的ホストインベントリファイルを作成する

これまでのところ、RHEL8サーバーであるコントロールノードにansibleを正常にインストールしました。制御ノードが管理するリモートノードは、インベントリファイルと呼ばれるファイルで定義する必要があります。インベントリファイルは、コントロールノードに存在するプレーンテキストファイルであり、リモートホストのホスト名またはIPアドレスで構成されます。

静的ホストファイルは、IPアドレスまたはホスト名によって定義された管理対象ノードのリストを含むプレーンテキストファイルです。/etc/ansible /ディレクトリに静的ファイル「hosts」を作成しましょう。

# vi /etc/ansible/hosts

次に、管理対象ホストの1つまたは複数のグループを定義します。このトピックの冒頭のセットアップで前述したように、2つの管理対象ホストがあります。セットアップから、静的ホストファイルは次のように定義されます。

[webserver]
192.168.0.15

[database_server]
192.168.0.200

インベントリファイルを保存して終了します。

管理対象ホストを一覧表示するには、次のコマンドを実行します。

# ansible all -i hosts --list-hosts

これまで、制御ノードにAnsibleをインストールし、制御ノードにある静的ホストファイルで管理対象ホストを定義することができました。

次に、リモートホストまたは管理対象ホストを管理または制御する方法を確認します。

ステップ5:リモートノードに接続するようにAnsibleコントロールノードをセットアップする

Ansibleコントロールノード(RHEL 8)がリモートホストシステム(Debian10およびCentOS8)を管理するには、リモートホストに対してパスワードなしのSSH認証を設定する必要があります。これを行うには、SSHキーペアを生成し、公開キーをリモートノードに保存する必要があります。

Ansibleコントロールノードで、通常のユーザーとしてログインし、コマンドを実行してSSHキーペアを生成します。

# su tecmint
$ ssh-keygen

次に、図のように公開sshキーをリモートノードにコピーします。

$ ssh-copy-id [email protected]	        (For Debian 10 node)
$ ssh-copy-id [email protected]	        (For CentOS 8 node)

すべてのリモートノードに公開鍵を追加したら、Ansible Controlノードからpingコマンドを発行して、それらが到達可能であることを確認します。

$ ansible -m ping all

上記の出力から、pingコマンドが成功し、すべてのノードへの到達可能性をテストできたことがはっきりとわかります。

このガイドでは、RHEL 8を実行しているコントロールノードにAnsibleを正常にインストールしてセットアップしました。後で、静的ホストファイルでリモートホストを定義し、SSHパスワードなし認証を設定して、管理対象ホストに接続して制御するようにコントロールノードを構成しました。