Ansibleは、ソフトウェアプロビジョニング、構成管理、およびアプリケーション展開を自動化するために使用できる無料のオープンソースソフトウェアです。 PuppetやChefとは異なり、Ansibleを使用する前にクライアントサーバー環境をセットアップする必要はありません。中央の場所から複数のホストを管理できます。このツールは非常にシンプルでありながら、複雑な多層ITアプリケーション環境を自動化するための強力なツールです。 Ansibleは通常のSSHチャネルを介して通信し、リモートマシンから情報を取得してタスクを実行します。
このチュートリアルでは、Ubuntu18.04サーバーにAnsibleをインストールして使用する方法を学習します。
- OpenSSHサーバーがインストールされた2つのUbuntu18.04サーバーシステム。
- 静的IPアドレス192.168.0.101がサーバーシステムに設定され、192.168.0.104がクライアントシステムに設定されます。
- sudo権限を持つroot以外のユーザーが両方のシステムに設定されています。
開始する前に、次のコマンドを使用してシステムを最新バージョンに更新します。
sudo apt-get update -y
sudo apt-get upgrade -y
システムが最新の状態になったら、システムを再起動して変更を適用します。
デフォルトでは、最新バージョンのAnsibleはUbuntu18.04のデフォルトリポジトリでは利用できません。そのため、サーバーにAnsiblePPAを追加する必要があります。これを行うには、次のコマンドを実行します。
sudo apt-add-repository ppa:ansible/ansible
次に、リポジトリを更新し、次のコマンドを使用してAnsibleをインストールします。
sudo apt-get update -y
sudo apt-get install ansible -y
インストールが完了したら、次のコマンドでAnsibleのバージョンを確認できます。
sudo ansible --version
出力:
ansible 2.7.1 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
次に、Ansiblehostsファイルで管理するクライアントシステムを定義する必要があります。これを行うには、/ etc / ansible / hostsファイルを編集します:
sudo nano /etc/ansible/hosts
次の行を追加します:
[Client] node1 ansible_ssh_host=192.168.0.104
終了したら、ファイルを保存して閉じます。
AnsibleはSSHを使用してクライアントホストと通信します。そのため、クライアントホストのキーベースのssh認証を構成する必要があります。
まず、次のコマンドを使用してSSHキーペアを生成します。
ssh-keygen
出力:
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow [email protected] The key's randomart image is: +---[RSA 2048]----+ | . . . | | . . . + | | o . * | | . o . o o | | . o S o | | O .oo.. . | | * Bo.* + oo | | ..oo+=.E =o = | | ooo*++...+* | +----[SHA256]-----+
次に、次のコマンドを使用して、この公開鍵をクライアントシステムにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
出力:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.
これで、Ansibleがインストールおよび構成されました。 Ansibleのタイムテストです。
Ansibleサーバーで、次のコマンドを使用してAnsibleを使用してクライアントシステムにpingを実行してみてください。
ansible -m ping Client
出力:
node1 | SUCCESS => { "changed": false, "ping": "pong" }
Ansiblehostsファイルに複数のクライアントが構成されている場合。次に、次のコマンドを使用してすべてのクライアントシステムにpingを実行できます。
ansible -m ping all
次のコマンドを使用して、クライアントシステム上のApacheWebサーバーのステータスを確認できます。
ansible -m shell -a 'service apache2 status' Client
出力:
node1 | CHANGED | rc=0 >> * apache2 is running
クライアントシステムのパーティションサイズを確認するには、次のコマンドを実行します。
ansible -m shell -a 'df -h' Client
出力:
node1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda1 138G 48G 83G 37% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 1.9G 4.0K 1.9G 1% /dev tmpfs 384M 1.2M 383M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 67M 1.9G 4% /run/shm none 100M 36K 100M 1% /run/user /dev/sda5 225G 35G 180G 16% /Data>
おめでとう!これで、Ubuntu18.04サーバーにAnsibleが正常にインストールおよび構成されました。 Ansibleを使用して簡単なタスクをリモートで簡単に実行できるようになりました。