0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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インスタンスを作成しています。

image.png

インスタンスを作成していない場合は、このチュートリアルをチェックするか、このクイックスタートガイドのステップに従ってください。できれば同じリージョン上で、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ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?