Ansible は、複数のサーバーを中央コンピュータから管理・運営するために使用されます。 これは、サーバー管理ツールです。 Ansibleは、ChefやPuppetのようにサーバ側で設定をする必要がありません。 Ansibleをコンピュータにインストールするだけで、SSH経由でサーバーを管理・運用することができます。 非常にシンプルで使いやすいツールです。 今回は、CentOS 8にAnsibleをインストールして使用する方法を紹介します。 それでは、始めましょう。

Ansible のインストール:

Ansible は CentOS 8 の EPEL リポジトリで利用可能です。 そのため、CentOS 8にAnsibleを簡単にインストールすることができます。

まず、以下のコマンドでDNFパッケージのリポジトリキャッシュを更新します:

$ sudo dnf makecache

さて、EPELリポジトリを有効にするには、以下のコマンドで epel-release パッケージをインストールしてください。

$ sudo dnf install epel-release

インストールを確認するには、Yキーを押して、<Enter>を押してください。

epel-release パッケージがインストールされ、EPEL リポジトリが有効になっているはずです。

ここで、以下のコマンドでDNFパッケージリポジトリのキャッシュを再度更新します:

$ sudo dnf makecache

今度は、以下のコマンドでAnsibleをインストールします。

$ sudo dnf install ansible

インストールを確認するには、Yキーを押して、<Enter>を押してください。

DNF はインターネットから必要なパッケージをすべてダウンロードし始めます。

EPEL リポジトリの GPG キーを受け入れるよう尋ねられることがありますが、その場合は、「OK」を押します。 Y を押し、<Enter> を押して受け入れます。

DNF はダウンロードしたパッケージをすべてインストールし始めます。

この時点で、Ansible はインストールされているはずです。

ここで、次のコマンドを実行します:

$ ansible –version

ご覧のように、私は Ansible 2.0 を実行しています。9.3 を実行していますが、問題なく動作しています。

Configuring Servers for Ansible:

Ansible でサーバーを管理または制御するには、サーバー上に SSH サーバーをインストールして実行する必要があります。 サーバーの SSH ポートが開いていて、Ansible ホストからサーバーにアクセスできる必要があります。 これが Ansible を使用する唯一の要件です。

この記事では、4 つの仮想マシン (VM) (2 つの Ubuntu Server 18.04 LTS VM と 2 つの Debian 10 VM) を使用して、Ansible サーバー管理および運営の基本を実演する予定です。

4 つの VM は次のとおりです。

linuxhint-f1a46 – 192.168.20.161
linuxhint-8ee7a – 192.168.20.166
linuxhint-s40 – 192.168.20.171
linuxhint-s41- 192.168.20.170

サーバーのIPアドレスを使用して、Ansibleで管理または管理することが可能です。 また、サーバーの DNS 名も使用できます。

この記事では、VM の IP アドレスの DNS 解決に /etc/hosts ファイルを使用することにします。

追従する場合は、次のように vi テキスト エディターで /etc/hosts ファイルを開きます:

$ sudo vi /etc/hosts

ここで、以下のスクリーンショットにマークされている行を追加して、ファイルを保存してください。

ここで、CentOS 8 Ansibleホストで以下のようにSSHキーを生成します。

$ ssh-keygen

Press <Enter>.

プレス <Enter>.

Press <Enter>.

SSH キーが生成されました。

ここで、Ansible で管理したいすべてのサーバーに SSH キーをアップロードする必要があります。

$ ssh-copy-id [email protected]

ここで yes と入力し <Enter> を押します。

ここで、vm1.linuxhint.のログインパスワードを入力して、vm1.luna.のパスワードを入力します。

SSH キーがコピーされるはずです。

vm2.linuxhint.local, vm3.linuxhint.local, vm4.linuxhint.local サーバにも同じことを行ってください。

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

<2899>一度、SSHキーを各VMへコピーしておくと、そのVMは、そのSSHキーに対応した鍵になります。 以下のスクリーンショットにあるように、パスワードなしでSSH接続できるはずです。

ここで、各サーバーで以下のコマンドを実行し、ログインユーザーにパスワードなしのsudoアクセスを許可します。 これは、Ansible が root コマンドを実行するために必要です。

$ echo “$(whoami) ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/$(whoami)

Ansible から設定または管理できるすべてのサーバーの準備ができました。

Using Ansible:

Ansible は管理するすべてのホストリストを inventory file というファイルに保持しています。 Ansible のインベントリ ファイルは、単なるプレーン テキスト ファイルです。

まず、新しい Ansible プロジェクト ディレクトリ ~/ansible/ を作成し、次にインベントリ ファイルを作成しましょう。

$ mkdir ~/ansible

ここで、~/ansible ディレクトリに移動します。

$ cd ~/ansible

ここで、以下のようにAnsibleインベントリー・ファイルを作ってください。 このファイルの名前は何でもかまいません。 ここではhostsと呼ぶことにします。

$ vi hosts

さて、以下のようにサーバを追加します。 ここで、ansible_userオプションは、Ansibleがこれらのサーバー上でコマンドを実行するために使用するユーザーを定義するために使用します。

サーバーの IP アドレスと DNS 名をインベントリ・ファイルに混在させることもできます。 ここでは、webserver と dbserver の 2 つのグループを作成しました。

webserver グループに vm1 と vm2 サーバーを追加しました。

インベントリファイルを作成したら、Ansible の -i オプションを使用してインベントリファイルを使用できます。

以下のように、インベントリファイルからすべてのホストをリストアップできます:

$ ansible -i hosts –list-hosts all

以下のように、すべてのホストがアクティブかどうかを確認することもできます。

$ ansible -i hosts –list-hosts -m ping all

ご覧の通り、すべてのホストがアクティブになっています。

また、同様に一つのグループ内のすべてのホストにpingを実行することもできます。

$ ansible -i hosts –list-hosts -m ping webserver

Ansibleを使ってシェルコマンドを実行するには、次のようにします。

$ ansible -i hosts -m shell -a ‘command’ <all|groupName>

また、以下のように(sudo 権限で)シェルコマンドを実行することも可能です。

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘command’ &lt;all
|groupName&gt;

例えば、Ansibleを使ってWebサーバーグループのホストでAPTパッケージのリポジトリキャッシュを更新するには、以下のようにします。

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘apt update’ webserver

ご覧のように、Webサーバーグループのすべてのホストについて、APTパッケージリポジトリキャッシュが更新されていることが確認できます。

Web サーバーグループのすべてのホストに Apache 2 Web サーバーをインストールしてみましょう。

$ ansible -i hosts -b –become-method=sudo -m shell -a
‘apt install -y apache2’ webserver

Apache Web Server が Web Server グループのすべてのホストにインストールされていることを確認します。

ご覧のように、Apache Web サーバーは Web サーバーグループのすべてのホストで動作しています。

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘curl -sI
http://localhost’ webserver

同様に、dbserverグループのすべてのホストで任意のコマンドを実行できるようになります。

$ ansible -i hosts -m shell -a ‘lsb_release -a’ dbserver

Ansible Playbookを使ってより簡単にサーバを管理することも可能です。 Ansible Playbookはこの記事の範囲外です。 Ansible Playbookの詳細については、Ansibleのドキュメントをお読みください。

本記事をお読みいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。