Ubuntu 16.04でAlibaba Cloud ECSインスタンスにRancherをインストールする方法

今回のブログでは、Ubuntu 16.04でインストールした**Alibaba Cloud** ECSインスタンスに**Rancher**をインストールする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-rancher-on-an-alibaba-cloud-ecs-instance_595196)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
Alibaba Cloud [Elastic Compute Service (ECS)](https://www.alibabacloud.com/product/ecs?spm=a2c65.11461447.0.0.12541476yD7sNk)インスタンスが有効化されており、有効な支払い方法を確認している必要があります。新規ユーザーの場合は、Alibaba Cloudアカウントで[無料アカウントを取得](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.12541476yD7sNk)することができます。ECSインスタンスのセットアップ方法がわからない場合は、[このチュートリアル](https://www.alibabacloud.com/blog/3-ways-to-set-up-a-linux-server-on-alibaba-cloud_572384?spm=a2c65.11461447.0.0.12541476yD7sNk)または[クイックスタートガイド](https://www.alibabacloud.com/help/doc-detail/25422.htm?spm=a2c65.11461447.0.0.12541476yD7sNk)を参照してください。ECSインスタンスには、少なくとも1GBのRAMと1つのCoreプロセッサが必要です。

#手順
以下の手順に従って、Alibaba Cloud ECSインスタンスにRancherをインストールする方法を説明します。

###Dockerのインストール
Rancherをインストールして実行する前に、RancherにはDockerが必要なので、まずDockerをインストールする必要があります。まず、以下のコマンドで古いdockerファイルを削除します。

```
sudo apt-get remove docker docker-engine docker.io
```

次に、利用可能なパッケージをすべてアップデートします。`sudo apt-get update`コマンドを実行すると、それがあなたのために仕事をしてくれます。次に、以下のコマンドを使用して、`apt`がHTTPSでリポジトリを使用できるようにするためのパッケージをインストールします。

```
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
```

以下のコマンドでDockerの公式GPGキーを追加します。

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

ここで、キーの指紋の最後の 8 桁を検索して、キー `9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88` を持っていることを確認します。次のコマンドを使用できます。

```
sudo apt-key fingerprint 0EBFCD88
```

このような出力が表示されるはずです。

```
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
```

ここで、以下のコマンドを使用して安定版リポジトリを設定します。

```
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

次に、sudo apt-get updateコマンドを使ってパッケージリストを再度更新し、以下のコマンドを使ってリポジトリ内のDockerの利用可能なバージョンを全てリストアップします。

```
apt-cache madison docker-ce
```

出力はこんな感じになるはずです。

```
docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
```

以下のコマンドで`=`の後に最新の安定版の2列目であるversion-stringを追加して、Docker CEの最新バージョンをインストールします。次に、以下のコマンドを使用して、お好みの特定のバージョンのDockerをインストールします。

```
sudo apt-get install docker-ce=17.09.1~ce-0~ubuntu
```

バージョン文字列を付けずにDockerをインストールすることもできますが、本番環境用に特定のバージョンのDockerをインストールすることをお勧めします。以下のコマンドでDockerが正しくインストールされていることを確認してください。

```
sudo docker run hello-world
```

このコマンドは、テストイメージをダウンロードし、コンテナ内で実行します。コンテナが実行されると、情報メッセージを表示して終了します。以下の出力のようなメッセージが表示されるはずです。

```
Hello from Docker!
```

このメッセージは、インストールが正しく動作しているように見えることを示しています。

このメッセージを生成するために、Dockerは以下の手順を実行しました。

1、DockerクライアントがDockerデーモンに連絡しました。
2、DockerデーモンがDocker Hubから「hello-world」イメージを引っ張ってきました。(amd64)
3、Dockerデーモンはそのイメージから新しいコンテナを作成しました。
4、Dockerデーモンはその出力をDockerクライアントにストリーム配信し、その出力をターミナルに送信しました。

もっと野心的なことに挑戦するには、Ubuntuのコンテナを使って実行してみましょう。

```
 $ docker run -it ubuntu bash
```

無料のDocker IDでイメージの共有や、ワークフローを自動化。
[https://cloud.docker.com/](https://hub.docker.com/?spm=a2c65.11461447.0.0.12541476yD7sNk)

その他の例やアイデアについては、こちらをご覧ください。
[https://docs.docker.com/engine/userguide/](https://docs.docker.com/config/daemon/)

###Rancherのインストール
必要な依存関係をすべてインストールしたので、Rancherをインストールして実行する準備ができました。以下の Docker コマンドを実行してください。

```
sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
```

Rancher サーバーの起動には 1 分もかかりません。その後、お気に入りのウェブブラウザを開き、お使いのサーバーの `http://YourServerIP:8080` のポート 8080 にアクセスしてください。何も問題がなければ、Rancher のユーザーインターフェースが表示され、最初のクラスターを追加する際のガイドが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/948cc7bd-cfad-13ab-aba1-ad4ff511a8d9.png)


###Rancherのアクセス制御を設定する
Rancher をインストールした後は、アクセス制御の設定を行う必要があります。Rancher のアクセスコントロールを設定することで、Rancher サーバーへのアクセス権を持つユーザーを管理することができます。

ウェブページ上部のADMINメニューにカーソルを合わせ、アクセスコントロールをクリックします。ここではローカル認証を使用したいので、LOCAL をクリックし、ユーザー名とパスワードを入力します。最後に、ローカル認証を有効にするボタンをクリックします。ローカル認証が有効になった状態でRancherのダッシュボードにリダイレクトされます。

###新しいホストを追加する
ホストは Rancher 内で最も基本的なリソースの単位であり、仮想または物理の Linux サーバーとして表現されます。Rancher に新しいホストを追加するには、新しい Alibaba Cloud ECS インスタンスを作成する必要があります。ここでは、Ubuntu オペレーティングシステムを搭載し、2GB 以上の RAM を持つ新しい Alibaba Cloud ECS インスタンスを使用しています。まず、この2つのサーバーを区別するために、新しいホスト名を設定します。以下のコマンドを実行し、任意のホスト名を設定します。

```
sudo hostnamectl set-hostname host01
```

ここで、次のように ssh を使ってホストサーバに接続します。

```
ssh sajid@IPAddress of host01  
```
次に、このスクリプトを使って最新のDockerをインストールします。

```
curl -fsSL https://get.docker.com -o get-docker.sh
```

このスクリプトをsh get-docker.shコマンドを使って実行すると、仕事をしてくれます。Dockerをインストールしたら、以下のコマンドを使ってdockerサービスを起動し、起動時に起動できるようにする必要があります。

```
systemctl start docker
systemctl enable docker
```

次に、Rancherサーバーにrancher host01を追加する必要がありますが、そうするには、Rancherのダッシュボードを開き、`INFRASTRUCTUR`メニューにカーソルを移動し、Hostsをクリックします。次の画面で、ホストの追加ボタンをクリックすると、ホストの登録URLを聞かれるので、ここではデフォルトを使用して保存ボタンをクリックします。

次の画面では、ホストの種類を選択します。Rancherは[Amazon EC2](https://aws.amazon.com/jp/ec2/?spm=a2c65.11461447.0.0.12541476yD7sNk), [Azure](https://azure.microsoft.com/en-us/?spm=a2c65.11461447.0.0.12541476yD7sNk), [DigitalOcean](https://www.digitalocean.com/?spm=a2c65.11461447.0.0.12541476yD7sNk), [Exoscale](https://www.exoscale.com/?spm=a2c65.11461447.0.0.12541476yD7sNk)など多くのホストタイプをサポートしています。とりあえず、カスタムホストタイプを選択し、rancher host01サーバーのIPアドレスを入力し、ボックスにDockerコマンドをコピーします。

今度はrancher host01のターミナルシェルに行き、このようにdockerコマンドを貼り付けます。

```
sudo docker run -e CATTLE_AGENT_IP="192.168.33.11"  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.9 http://192.168.33.10:8080/v1/scripts/C7871D15E9CE6FFA892F:1514678400000:T9qDygb2pHroTMBuqA9Jylol8tU
```

上記のコマンドを実行すると、rancher-host01 サーバー上に新しいコンテナ Rancher Agent がダウンロードされ、作成されます。最後に、Rancher ダッシュボードのホスト追加ページに戻り、閉じるボタンをクリックしてください。

#最後に
このチュートリアルでは、Ubuntu 16.04でインストールしたAlibaba Cloud ECSインスタンスにDockerとRancherをインストールする方法を学びました。また、Alibaba Cloud ECSインスタンス上でDockerとRancherを設定しました。さらに、同様にRancherホストを追加しました。これで、より多くのホストをデプロイすることができ、他のコンテナやアプリケーションをデプロイする準備が整いました。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*