Ansibleは、アプリケーションのデプロイと管理を可能にするフリーでオープンソースの設定管理システムです。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
Alibaba Cloud Tech Share執筆者、Hitesh Jethva。
Ansibleはフリーのオープンソース構成管理システムで、アプリケーションを自動的にデプロイして集中管理することができます。Ansibleを使用することで、中央の場所から大量のサーバーを簡単に管理・制御することができます。Ansibleは、開始するためのオーバーヘッドがはるかに小さいので、ChefやPuppetの素晴らしい代替ソリューションになります。AnsibleはSSHチャンネルを使用してリモートシステムから情報を取得するので、クライアントコンピュータに追加のソフトウェアをインストールする必要はありません。
このチュートリアルでは、Alibaba Cloud ECS Ubuntu 16.04サーバにAnsibleをインストールして使用する方法をステップバイステップで説明します。
###前提条件
- Ubuntu 16.04をインストールしたAlibaba Cloud ECSインスタンスを2台使用しています。
- サーバーノードに静的IPアドレス192.168.0.103が構成されています。
- クライアントノードには静的IPアドレス192.168.0.104が設定されています。
- 各ノードにルートパスワードが設定されています。
###Alibaba Cloud ECSインスタンスを起動する
まず、https://ecs.console.aliyun.com/?spm=a3c0i.o25424en.a3.13.388d499ep38szx">Alibaba Cloud ECS Consoleにログインします。メインダッシュボードにリダイレクトされます。適切なリージョンを選択して、ECSインスタンスに移動する必要があります。このチュートリアルでは、シンガポールのリージョンでECSインスタンスを作成しています。
インスタンスを作成していない場合は、このチュートリアルをチェックするか、このクイックスタートガイドのステップに従ってください。できれば同じリージョン上で、2つのECSインスタンスを実行している必要があります。
私はクレデンシャルとしてSSHキーペアでECSインスタンスを設定していることに注意してください。これにより、SSH を使用してインスタンスに接続することができます。
###Ansibleのインストール
デフォルトでは、Ubuntu 16.04のリポジトリではAnsibleは利用できません。そのため、サーバノード上にAnsibleのパーソナルリポジトリを追加する必要があります。以下のコマンドでリポジトリを追加することができます。
apt-add-repository ppa:ansible/ansible
以下のような出力が表示されるはずです。
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.
http://ansible.com/
More info: https://launchpad.net/~ansible/+archive/ubuntu/ansible
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: keyring `/tmp/tmpiylu9n1t/secring.gpg' created
gpg: keyring `/tmp/tmpiylu9n1t/pubring.gpg' created
gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpiylu9n1t/trustdb.gpg: trustdb created
gpg: key 7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
Ansibleのリポジトリを追加した後、リポジトリがシステムに追加されるようにシステムをアップデートする必要があります。以下のコマンドを実行してシステムをアップデートします。
apt-get update -y
リポジトリが更新されたら、以下のコマンドでAnsibleをインストールします。
apt-get install ansible -y
###Ansibleホストの設定
Ansible は、hosts ファイルを使用してすべてのサーバノードとクライアントノードを追跡しています。そのため、他のノードと通信する前にこのファイルを設定する必要があります。
まず、以下のコマンドでファイルを開きます。
nano /etc/ansible/hosts
すべてのコメント行が表示されているはずです。ここでは、以下のように管理したいクライアントノードをすべて追加する必要があります。
[servers]
client-node ansible_ssh_host=192.168.0.104
保存して終了したらファイルを閉じます。
###リモートホスト用のSSHキーを設定する
Ansible は他のノードとの通信に SSH を使用します。そのため、サーバノードでSSH鍵を生成し、そのSSH鍵をクライアントノードにコピーする必要があります。
サーバノードでは、以下のコマンドを実行してSSH鍵を生成します。
ssh-keygen -t rsa -b 4096
以下のような出力が表示されるはずです。
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:3FvzXmI3EhW7idSZy+ITzW7UrefZP/R5AYx2VBu3ytU root@server-node
The key's randomart image is:
+---[RSA 4096]----+
| .+.|
| .. @|
| +. XE|
| . . oo+O *|
| S o +B.Oo|
| o.o*+ |
| . +*+B|
| o+O*|
| ..B|
+----[SHA256]-----+
次に、以下のコマンドで作成した鍵をクライアントノードにコピーします。
ssh-copy-id root@192.168.0.104
次に、クライアントノードで ssh 鍵認証を行い、認証ができているかどうかを確認します。
ssh root@192.168.0.104
正しく設定していれば、パスワードの入力を促されることはありません。
###Ansible のテスト
すべてが正しく設定できたら、いよいよAnsibleのテストをしてみましょう。
まず、以下のコマンドを実行して、hosts ファイルで指定したすべてのクライアントノードを ping します。
ansible -m ping all
クライアントノードが起動していれば、以下のような出力が表示されるはずです。
client-node | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}
注意: "all" は、hosts ファイルで複数のホストを指定している場合、上記のコマンドはすべてのホストに対して ping コマンドを実行することを意味します。
また、以下のコマンドで単一のホストやホストグループに対して ping コマンドを実行することもできます。
ansible -m ping client-node
ansible -m ping servers
クライアントノードのメモリ使用量を知りたい場合は、以下のコマンドを実行します。
ansible -m shell -a 'free -m' client-node
以下のような出力が表示されるはずです。
client-node | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3835 3185 649 177 77 929
-/+ buffers/cache: 2179 1656
Swap: 10793 0 10793
クライアントノードのパーティションサイズを確認するには、以下のコマンドを実行します。
ansible -m shell -a 'df -h' client-node
出力します。
client-node | SUCCESS | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 92G 27G 61G 31% /
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 1.9M 1.9G 1% /run/shm
none 100M 44K 100M 1% /run/user
/dev/sda5 353G 75G 261G 23% /Data
###結論
おめでとうございます。Alibaba Cloud ECSサーバにAnsibleを設定することに成功しました。これで、中央の場所から単一のコマンドを実行することで、複数のサーバーを簡単に管理できるようになりました。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ