GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS 8 /RHEL8にAnsibleをインストールして構成する方法

Ansibleは、UnixライクおよびMicrosoftWindowsオペレーティングシステム向けのオープンソースソフトウェアプロビジョニングおよび構成管理ツールです。

Puppet、Chef、CFEngineとは異なり、サーバーソフトウェアは1台のマシンにインストールされ、クライアントマシンはエージェントソフトウェアを介して管理されます。 Ansibleでは、ノードはSSH経由でノード(Ansibleサーバー)を制御することによって管理されるため、管理対象ノード(クライアントサーバー)マシンで実行されるエージェントソフトウェアはありません。

Ansibleは、SSHを使用して数百のノードでソフトウェアの展開、構成管理を実行できます。通常、操作全体は1つのコマンドansibleで実行されます。ただし、場合によっては、展開のために複数のコマンドを実行する必要があります。

このガイドは、CentOS 8 / RHEL8にAnsibleをインストールするのに役立ちます。

環境

ホスト名 IPアドレス OS 目的
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 制御機
node1.itzgeek.local 192.168.0.20 CentOS 8 管理対象ノード1
node2.itzgeek.local 192.168.0.30 CentOS 7 管理対象ノード2

CentOS 8 /RHEL8にAnsibleをインストールする

セットアップ制御ノード

Ansibleをインストールするには、CentOS8とRHEL8でそれぞれEPELとAnsibleリポジトリを有効にする必要があります。

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

yumコマンドでAnsibleをインストールします。

yum install -y ansible

Ansibleをインストールしたら、以下のコマンドを実行してAnsibleのバージョンを確認します。

ansible --version

出力:

ansible 2.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

管理対象ノードのセットアップ

クライアントマシンには、少なくともPython 2(バージョン2.6以降)またはPython 3(バージョン3.5以降)が必要です。

### CentOS 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

管理対象ノードでSELinuxを有効にしている場合は、Ansibleでコピー/ファイル/テンプレート関連の機能を使用する前に、以下のパッケージをノードにインストールする必要があります。

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

SSH認証

前述のように、Ansibleはリモート通信にネイティブOpenSSHを使用します。 Ansibleは、管理対象ノードでコマンドを実行するためのパスワードなし認証とパスワード認証の両方をサポートしています。

ここでは、このデモで、ansible制御ノード(root)と管理対象ノード(root)の間でパスワードなしの通信を使用しました。ただし、パスワード認証でAnsibleを使用する方法を説明します。

SSHキー認証(パスワードなし認証)

ssh認証に関しては、デフォルトでは、sshキー(パスワードなしの認証)を使用してリモートマシンで認証します。

読む :CentOS 8 /RHEL8でSSHパスワードレスログインを設定する方法

読む :CentOS 7 /RHEL7でSSHパスワードレスログインを設定する方法

ご存知のとおり、ノードで実行するソフトウェアのプロビジョニングまたは構成の変更には、root権限またはrootと同等の権限(sudo)が必要です。したがって、簡単にするために、Ansibleサーバーのrootユーザーとノードのrootユーザーの間にパスワードなしの通信を設定します。 パスワード認証

パスワード認証は、オプション–ask-passを指定することにより、必要に応じて使用することもできます。このオプションでは、制御マシンへのsshpassが必要です。

yum install -y sshpass 

Ansibleインベントリを作成する

/ etc / ansible / hostsファイルは、AnsibleがSSH / Winrm(Windows)を介して接続して管理するリモートホストのインベントリを保持します。現時点では、リモートLinuxノードの構成を管理する方法のみを説明します。

インベントリファイルを編集します。

vi /etc/ansible/hosts

1つ以上のリモートシステムのIPアドレスまたはホスト名をその中に入れます。 [GROUP_NAME]でサーバーをグループ化できます。ここでは、両方のマシンをデモサーバーグループに追加しました。

グループは、特定の用途のシステムを分類するために使用されます。グループを指定しない場合、グループ化されていないホストとして機能します。

[demoservers]
192.168.0.20
192.168.0.30

Ansible接続を確認する

制御マシンからのping(モジュール)を使用して、ノードの接続を確認しましょう。これを行うには、オプション-m(モジュールのロード)とall(すべてのサーバー)またはdemoservers(ノードのグループ)を指定したコマンドansibleを使用します。

このpingモジュールは、Ansible接続の問題のトラブルシューティングによく使用されます。
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

ansible -m ping all -u raj --ask-pass

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

出力:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

上記の例では、pingモジュールをansibleコマンドで使用して、パスワードなしおよびパスワード認証を使用してリモートホストのすべてまたはグループにpingを実行する方法を確認しました。

同様に、ansibleコマンドでさまざまなモジュールを使用できます。利用可能なモジュールはここにあります。

ノードでコマンドを実行

今回は、コマンドモジュールとansibleコマンドを使用して、リモートマシン情報を取得します。

以下のコマンドは、制御ノードと管理対象ノードの間でパスワードなしの通信があることを前提に記述されています。コマンドを実行するためにデモサーバーグループを使用しています。

ホスト名を確認

最初の例では、コマンドモジュールを使用してhostnameコマンドを実行し、リモートノードのホスト名を一度に取得します。

ansible -m command -a "hostname" demoservers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

稼働時間を確認

ノードの稼働時間を確認します。

 ansible -m command -a "uptime" demoservers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

リモートファイルの読み取り

特定のファイルの内容を表示することもできます。

ansible -m command -a "cat /etc/hosts" demoservers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

ファイル出力のリダイレクト

リダイレクションを使用して、出力(Ansibleサーバー上)を任意のファイルに保存することもできます。

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

ノードで構成を変更する

lineinfileモジュールを使用して、リモートノード上のファイルを編集できます。たとえば、ネームサーバーを追加するには、次のコマンドを使用できます。

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

以下のコマンドを使用して、変更を検証できます。

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

結論

それで全部です。これで、CentOS 8 / RHEL8にAnsibleが正常にインストールされました。 タスクを自動化するためのAnsibleプレイブックの作成に進むことができます。


Cent OS
  1. CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04&Debian9にAnsibleをインストールする方法

  2. CentOS7にAnsibleをインストールする方法

  3. CentOS8にAnsibleをインストールする方法

  1. RHEL 8 /CentOS8にphpMyAdminをインストールする方法

  2. CentOS / RHEL 7 :telnet をインストールして構成する方法

  3. CentOS / RHEL に Samba をインストールして構成する方法

  1. RHEL 8 /CentOS8にP7Zipをインストールする方法

  2. RHEL 8 /CentOS8にntfs-3gをインストールする方法

  3. PHP-mbstringをRHEL8/CentOS8にインストールする方法