Ansibleは、多数のサーバーを管理するための新たなツールです。Ansibleプレイブックを使えば、データセンターのサーバー上で実行する非常に柔軟で自動化されたタスクを、単一のエントリーポイントから作成できます。さらに、Ansibleプレイブックを作成し、ユーザーフレンドリーなWebベースのGUIであるRundeckなどから実行することも可能です。
Ansible を起動したら、ノードを接続してプレイブックの作成を開始できます。ただし、まずは Ansible をインストールする必要があります。
Ubuntu Server 18.04に公式Ansibleリリースをインストールする手順を詳しく説明します。次に、AnsibleサーバーのSSHキーを単一のクライアントノードにエクスポートし(ノードがサーバーとどのように関連付けられるかを示すため)、そのノードをAnsibleで設定します。
参照:2018年データセンター自動化調査レポート:データの増加にもかかわらず、自動化の導入は依然として遅い(Tech Pro Research)
必要なもの
Ubuntu Server 18.04 を 2 つインストールし、両方に sudo 権限を持つユーザーアカウントが必要です。これで完了です。
アップデート/アップグレード
Ansibleをインストールする前に、サーバーがアップデートおよびアップグレードされていることを確認してください。カーネルをアップグレードした場合は、サーバーの再起動が必要になりますのでご注意ください。そのため、アップデート/アップグレードは再起動が可能なタイミングで実行してください(ライブパッチがインストールされている場合は、いつでもタスクを実行できます)。アップデートとアップグレードを行うには、Ansibleをホストするサーバーにログインし、以下のコマンドを実行してください。
sudo apt-get update
sudo apt-get upgrade -y
プロセスが完了したら、必要に応じてサーバーを再起動してください。これでインストールの準備が整いました。
Ansibleのインストール
次に、Ansibleをインストールします。手順は以下のとおりです。
- AnsibleをホストするUbuntuサーバーにログインします
- sudo apt-add-repository ppa:ansible/ansibleコマンドを使用して必要なリポジトリをインストールします。
- sudo apt-get updateコマンドで apt を更新します。
- sudo apt-get install ansible -yコマンドで Ansible をインストールします。
Ansibleはモジュールを実行するためにPythonインタープリターを必要とするため、Pythonもインストールする必要があります。そのためには、以下のコマンドを実行します。
sudo apt-get install python -y
注: Python がすでにインストールされている場合があります。
この時点で、Ansible がインストールされ、使用できる状態になります。
サーバーへのSSHアクセスを構成する
次に、ノードがAnsibleサーバーにアクセスできるようにする必要があります。これはSecure Shell (SSH) 経由で行います。サーバーのSSH公開鍵をノードにコピーします。サーバーにまだ鍵がない場合は、次のコマンドで生成してください。
ssh-keygen
ファイル名(デフォルトのまま)とキーのパスフレーズの作成/検証を求められます(図 A)。
図A
次のコマンドで公開 SSH キーの内容を表示します。
cat ~/.ssh/id_rsa.pub
このコマンドの出力で何を行うかは以下のとおりです。
- キーからテキストをコピーします。
- ノード サーバーにログインします。
- sudo -sコマンドを発行します。
- sudo nano ~/.ssh/authorized_keysコマンドで authorized_keys ファイルを開きます。
- このファイルの下部にサーバー キーの内容を貼り付けます。
- ファイルを保存して閉じます。
このプロセスを簡素化したい場合は、次のコマンドを発行します (Ansible サーバーから)。
ssh-copy-id NODE_IP
ここで、NODE_IP は追加するノードの IP アドレスです。
新しく追加した鍵をテストするには、Ansibleサーバーに戻り、ノードマシンにSSH接続します。ユーザーのパスワードではなく、SSH鍵のパスフレーズの入力が求められるはずです(図B)。
図B
Ansible に接続するすべてのノードに対してこれを完了します。
ノードの設定
次に、Ansibleがノードの場所を認識していることを確認します。次のコマンドを実行します。
sudo nano /etc/ansible/hosts
そのファイルで、ノード用の新しいグループを作成し (この例では 1 つのノードのみを接続しています)、次のように IP アドレスを関連付けます。
[group_name]
ALIAS NODE_IP
group_name は作成するグループ名、ALIAS はノードのエイリアス、NODE_IP はノードのIPアドレスです。複数のノードがある場合は、以下のようにリストしてください。
[webservers]
WEB1 192.168.1.100
WEB2 192.168.1.101
WEB3 192.168.1.102
ファイルを保存して閉じます。次のコマンドで追加したすべてのノードにpingを実行してテストできます。
ansible -m ping all
出力に SUCCESS と表示されるはずです (図 C )。
図C
注意すべき点として、Ansibleはコマンドを実行しているユーザーに接続を試みます。つまり、jackユーザーでAnsibleコマンドを実行すると、そのユーザーでノードに接続しようとします。そのユーザーがノード上にいない場合は、Ansibleにどのユーザーを使用するか指示する必要があります。これを行うには、以下の手順に従ってください。
- コマンドsudo mkdir /etc/ansible/group_varsを使用して、新しいディレクトリ (Ansible サーバー上) を作成します。
- sudo nano /etc/ansible/group_vars/serversコマンドで新しいファイルを作成します。
- そのファイルに、次の行を追加します: ansible_ssh_user: USERNAME (USERNAME はリモート ノード上のユーザー名です)。
- そのファイルを保存して閉じます。
おめでとうございます。Ansible がインストールされ、ノードと通信できるようになりました。これでプレイブックの作成を始める準備が整いました。