AWS 上で Rancher 環境を構築するメモ(コマンドをほぼ不使用で、ありもののAMIを使って)

# AWS 上で Rancher 環境を構築するメモ

## 目的

- コマンド(docker)などよく知らないひとでも
- AWS をちょっといじれれば
- Rancher 環境を作って遊ぶことができるよ。

## 注意

- 無料枠の範囲を超えていると思うのでお財布と相談して利用
- ありものの AMI を使っているので Rancher は最新ではないです

## 構成

| 用途 | AMI 名 | AMI Image ID | SSH Login Username | Recommend Instance Type | Note |
| :--: | :--: | :--: | :--: | :--: | :--: | 
| WEB UI: Rancher Server | Rancher on RancherOS | ami-d68392ad | rancher | t2.medium | 手で作る |
| Each Hosts : Docker | RancherOS - HVM | [Host AMI List](https://github.com/rancher/os/blob/master/README.md/#user-content-amazon) | rancher | t2.small | Rancher WEB UI から Deploy |

- Hosts AMI List: https://github.com/rancher/os/blob/master/README.md/#user-content-amazon

## 1. Rancher Host を Deploy する

- お勧めに従ってポチポチと
  - あとで ELB 配下に収める予定ですが動作確認もしたいので TCP:8080 が Public からつながるようにする
  - Public IP も忘れずにアサインする
  
| Rancher on RancherOS | ami-d68392ad | t2.medium |
| :--: | :--: | :--: |

## 2. Rancer Host を Deploy したのち ssh 接続してみる(任意)

- トラブルシュートするときには必要になることも

```shell
$ ssh -i <SSH Key> rancher@<INSTANCE DNS NAME or Public IP>
```
```shell
[rancher@ ~]$ ros --version
ros version v1.1.0
[rancher@ ~]$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                              NAMES
3c08e1dc751f        rancher/server:latest   "/usr/bin/entry /usr/"   7 minutes ago       Up 7 minutes        3306/tcp, 0.0.0.0:8080->8080/tcp   rancher-server

[rancher@ ~]$ docker --version
Docker version 1.12.6, build 78d1802

[rancher@ ~]$ docker exec -ti 3c08e1dc751f sh -c "cat /etc/os-release"
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
```

## 3. WEB UI 動作確認

- ADMIN に ！ が付いているように最初は管理者アカウントがノーパスで設定されている

```
アドレス: http://<Public IP>:8080/
```

## 4. HTTPS 化 (詳細割愛)

ELB:443 <---> Rancher:8080

- ACM で証明書取る
- Route 53 で DNS 設定
- ELB(ALB) を作って Rancher Host を Target 配下に置く
- https で接続できるか確認する

## 5. 管理者ユーザー設定

- 今回は GitHub アカウントと紐づけます
- ローカルでパスワード認証させることも可能

Rancher WEB UI: Admin -> Access Control

### 5-1. "1. Setup a GitHub Application"

- 自分の github.com にログイン
- Setting > Developer Setting
- OAuth Apps > New OAuth App
- Application name: rancher-on-aws
- Homepage URL : https://rancher.example.com/
- Application description : hogehoge
- Authorization callback URL : https://rancher.example.com/

### 5-2. "2. Configure Rancher to use your application for authentication"

- github.com 側に OAuth Apps に表示されている ClientID と Client Secret を Rancher WEB UI 側の  にコピペする

### 5-3. "3. Test and enable authentication"

- Authenticate する

### 5-4. GitHub is enabled

- ADMIN > Access Control で GitHub is enabled になれば成功
- ADMIN > Account で github アカウントが Admin になっていることを確認

## 6. EC2 Instance の Security Group 設定変更(任意)

- ELB 配下に入れたので Public の 8080 は閉じる
- ELB からの Private 8080 へのアクセスは残す
- Public の SSH は管理用に残す 

## 7. Hosts の追加

### 7-1. Rancher WEB UI

- INFRASTRUCTURE > Hosts
- ADD Hosts > Amazon EC2

### 7-2. AWS WEB UI

- AWS IAM > User で AmazonEC2FullAccess と AdministratorAccess のユーザーを作って Security Credentials で Create Access Key を実行する
    - (かなり緩い設定にしています)
- Access Key ID と Secret Access Key を Rancher WEB UI 側にコピペ

### 7-3. Rancher WEB UI

- Region: us-east-1 (EC2インスタンスのあるところを選択)
- Next: Authenticate & select a network へ進む
- Availability Zone, VPC/subnet を選択
- Security Group は Standard のまま
- Next: Set Instance options へ進む
- Name: ranchernode (ranchernode1 — ranchernode3 と自動で数字が付きます)
- Quantity: 3 (ノード数)
- AMI: ami-38964e45 (us-east-1 latest)
- SSH User: rancher (固定)
- IAM Profile: 適宜
- Private IP: 適宜(今回はチェックなしで Public からもアクセス可に)
- Create を押す

## 8. 以下のようになれば完了

![WS000131 (3)_LI.jpg](https://qiita-image-store.s3.amazonaws.com/0/67892/2a372e0c-803b-3af4-a31a-f0b72431d5e2.jpeg)