Ansible は、複数のサーバーを中央コンピュータから管理・運営するために使用されます。 これは、サーバー管理ツールです。 Ansibleは、ChefやPuppetのようにサーバ側で設定をする必要がありません。 Ansibleをコンピュータにインストールするだけで、SSH経由でサーバーを管理・運用することができます。 非常にシンプルで使いやすいツールです。 今回は、CentOS 8にAnsibleをインストールして使用する方法を紹介します。 それでは、始めましょう。
Ansible のインストール:
Ansible は CentOS 8 の EPEL リポジトリで利用可能です。 そのため、CentOS 8にAnsibleを簡単にインストールすることができます。
まず、以下のコマンドでDNFパッケージのリポジトリキャッシュを更新します:
さて、EPELリポジトリを有効にするには、以下のコマンドで epel-release パッケージをインストールしてください。
インストールを確認するには、Yキーを押して、<Enter>を押してください。
epel-release パッケージがインストールされ、EPEL リポジトリが有効になっているはずです。
ここで、以下のコマンドでDNFパッケージリポジトリのキャッシュを再度更新します:
今度は、以下のコマンドでAnsibleをインストールします。
インストールを確認するには、Yキーを押して、<Enter>を押してください。
DNF はインターネットから必要なパッケージをすべてダウンロードし始めます。
EPEL リポジトリの GPG キーを受け入れるよう尋ねられることがありますが、その場合は、「OK」を押します。 Y を押し、<Enter> を押して受け入れます。
DNF はダウンロードしたパッケージをすべてインストールし始めます。
この時点で、Ansible はインストールされているはずです。
ここで、次のコマンドを実行します:
ご覧のように、私は 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-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 ファイルを開きます:
ここで、以下のスクリーンショットにマークされている行を追加して、ファイルを保存してください。
ここで、CentOS 8 Ansibleホストで以下のようにSSHキーを生成します。
Press <Enter>.
プレス <Enter>.
Press <Enter>.
SSH キーが生成されました。
ここで、Ansible で管理したいすべてのサーバーに SSH キーをアップロードする必要があります。
ここで yes と入力し <Enter> を押します。
ここで、vm1.linuxhint.のログインパスワードを入力して、vm1.luna.のパスワードを入力します。
SSH キーがコピーされるはずです。
vm2.linuxhint.local, vm3.linuxhint.local, vm4.linuxhint.local サーバにも同じことを行ってください。
$ ssh-copy-id [email protected]
<2899>一度、SSHキーを各VMへコピーしておくと、そのVMは、そのSSHキーに対応した鍵になります。 以下のスクリーンショットにあるように、パスワードなしでSSH接続できるはずです。
ここで、各サーバーで以下のコマンドを実行し、ログインユーザーにパスワードなしのsudoアクセスを許可します。 これは、Ansible が root コマンドを実行するために必要です。
Ansible から設定または管理できるすべてのサーバーの準備ができました。
Using Ansible:
Ansible は管理するすべてのホストリストを inventory file というファイルに保持しています。 Ansible のインベントリ ファイルは、単なるプレーン テキスト ファイルです。
まず、新しい Ansible プロジェクト ディレクトリ ~/ansible/ を作成し、次にインベントリ ファイルを作成しましょう。
ここで、~/ansible ディレクトリに移動します。
ここで、以下のようにAnsibleインベントリー・ファイルを作ってください。 このファイルの名前は何でもかまいません。 ここではhostsと呼ぶことにします。
さて、以下のようにサーバを追加します。 ここで、ansible_userオプションは、Ansibleがこれらのサーバー上でコマンドを実行するために使用するユーザーを定義するために使用します。
サーバーの IP アドレスと DNS 名をインベントリ・ファイルに混在させることもできます。 ここでは、webserver と dbserver の 2 つのグループを作成しました。
webserver グループに vm1 と vm2 サーバーを追加しました。
インベントリファイルを作成したら、Ansible の -i オプションを使用してインベントリファイルを使用できます。
以下のように、インベントリファイルからすべてのホストをリストアップできます:
以下のように、すべてのホストがアクティブかどうかを確認することもできます。
ご覧の通り、すべてのホストがアクティブになっています。
また、同様に一つのグループ内のすべてのホストにpingを実行することもできます。
Ansibleを使ってシェルコマンドを実行するには、次のようにします。
また、以下のように(sudo 権限で)シェルコマンドを実行することも可能です。
|groupName>
例えば、Ansibleを使ってWebサーバーグループのホストでAPTパッケージのリポジトリキャッシュを更新するには、以下のようにします。
ご覧のように、Webサーバーグループのすべてのホストについて、APTパッケージリポジトリキャッシュが更新されていることが確認できます。
Web サーバーグループのすべてのホストに Apache 2 Web サーバーをインストールしてみましょう。
‘apt install -y apache2’ webserver
Apache Web Server が Web Server グループのすべてのホストにインストールされていることを確認します。
ご覧のように、Apache Web サーバーは Web サーバーグループのすべてのホストで動作しています。
http://localhost’ webserver
同様に、dbserverグループのすべてのホストで任意のコマンドを実行できるようになります。
Ansible Playbookを使ってより簡単にサーバを管理することも可能です。 Ansible Playbookはこの記事の範囲外です。 Ansible Playbookの詳細については、Ansibleのドキュメントをお読みください。
本記事をお読みいただきありがとうございました。