#CloudGarage Advent Calendar 2017 〜17日目〜

· ☕ 5 min read · ✍️ 靴ひも 伍長

#CloudGarage Advent Calendar 2017 の 17日目 だYO!

CloudGarage-Advent-Calendar-2017

こちらは #CloudGarage Advent Calendar 2017 17日目のエントリです。16日目は tsukaman さんの 2017年はCloud Garageをこんな風に使いました でしたっ。

RancherOSをインストールした話

CloudGarageさんからDevAssistProgram用プランを頂いたのでRancherOSのインストールをやってみました。CloudGarageさんマジ太っ腹です!本当ありがとうございます!

RanserOSをインストールするまえに…

事前にGitHubのアカウントを用意しておくと幸せになれます。あと鍵ペアも…鍵ペアはCloudGarageのコンパネ上で用意するか、鍵ペア生成ツールで作成しておけば大丈夫っす。

RancherOSの起動

CloudGarageのコンパネへログインし、インスタンス追加 からRancherOSのインスタンスを作成します。ISOイメージはRancherOS、ポートは全開放にします。この時点ではrootパスワード、公開鍵の登録はできないので注意。

設定名設定例備考
接続許可ポート全開放
SSH Key設定設定不可
インスタンス名(好きな名前)半角英数字で…
コメント(任意)日本語入力可能!!!!!!!!!
rootパスワード設定不可
プラン選択(お好きなプランを選択)

インスタンスの追加が完了したら CloudGarageのFAQ を参考に設定を進めます。

VNCコンソール上で以下のコマンドを実行して rancher ユーザにパスワードを設定します。

1
 $ sudo passwd rancher

設定後SSHログインして作業を進めます。各種設定ファイルは編集しても再起動時に既定の設定へ戻るみたいなので cloud-config.yml に直接書きます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 $ ssh rancher@(IPアドレス)
 $ sudo su -
 # vi cloud-config.yml
---
#cloud-config
ssh_authorized_keys:
  - ssh-rsa A...(公開鍵)

hostname: (ホスト名)

write_files:
  - path: /etc/ntp.conf
    permissions: 0644
    content: |
        tinker panic 0
        default kod nomodify notrap nopeer noquery
        restrict -6 default kod nomodify notrap nopeer noquery

        restrict 127.0.0.1
        restrict -6 ::1

        server (NTPサーバ) iburst

  - path: /etc/ssh/sshd_config
    permissions: 0644
    content: |
        Port (好きなポート番号)
        LoginGraceTime 2m
        PubkeyAuthentication yes
        AuthorizedKeysFile      .ssh/authorized_keys
        PasswordAuthentication no
        PermitEmptyPasswords no
        Subsystem       sftp    /usr/libexec/sftp-server

rancher:
  services:
    console:
      environment:
        TZ: 'JST-9'

 # mkfs.ext4 -L B2D_STATE /dev/vda
mke2fs 1.43.3 (04-Sep-2016)
/dev/vda contains a vfat file system labelled 'EPHEMERAL0'
Proceed anyway? (y,n) y [Enter]
:
Writing superblocks and filesystem accounting information: done

 # ros install -c cloud-config.yml -d /dev/vda
> INFO[0000] No install type specified...defaulting to generic
Installing from rancher/os:v1.0.3
Continue [y/N]: y [Enter]
> INFO[0002] start !isoinstallerloaded
> INFO[0002] trying to load /bootiso/rancheros/installer.tar.gz
404361ced64e: Loading layer [==================================================>] 4.221 MB/4.221 MB
:
Writing superblocks and filesystem accounting information: done

Continue with reboot [y/N]: y [Enter]
> INFO[0008] Rebooting
:

cloud-config.yml に書いた内容はざっくりいうと以下のとおりです。

  • 公開鍵の登録
  • ホスト名の設定
  • NTP関連の設定
  • SSH関連の設定
    1. ポート番号の変更
    2. ユーザがログインに成功するまでの制限時間を2分へ設定
    3. 鍵認証の有効化
    4. 公開鍵登録ファイルの指定
    5. パスワードログインの無効化
    6. 空パスワードのログインを無効化
    7. SFTPサービスの有効化(使う機会なさそうだけど一応…)
  • タイムゾーンの設定

再起動が終わったらCloudGarageのコンパネからISOをアンマウントし強制再起動をかけます。強制再起動が終わったら用意した秘密鍵を使ってSSHログインします。

1
2
 $ chmod 600 SSH-Key-of-Rancher.pem
 $ ssh -i SSH-Key-of-Rancher.pem -p (ポート番号) rancher@(IPアドレス)

SSHログイン後以下のコマンドを実行してRancherServerを起動します。初回起動時はコンテナのダウンロードが始まりますが2分程度で完了します。

1
2
 $ sudo su -
 # docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

WebUIの操作

RancherServerの起動が完了したら、http://(IPアドレス):8080 へアクセスし設定を進めます。

アクセス直後牛くんが出迎えてくれます🐮。Allow collection of anonymous statistics Learn More (匿名の統計の収集を許可する) にチェックもしくはチェックをはずし Got it を押します。

Welcome to rancher
Welcome to rancher: うしくんのお出迎え

右下のメニューから利用する言語を変更できるので、日本語に変更しておくと作業しやすいかも。

アクセスコントロール設定

現在WebUIへのアクセスには制限がかかっていないので、アクセスコントロールを設定し制限をかけます。設定方法は以下のとおり。

  • 管理者 -> アクセスコントロール -> GITHUB の順にクリック
  • https://github.com/settings/developers へアクセス
  • Register a new applicarion をクリックして新規アプリケーションを作成
    • Client ID と Client Secret が生成されたら Client ID と Client Secret をWebUIへそれぞれ入力し保存
  • GitHubアカウントで認証 をクリックして問題ないことを確認
Access control 画面
Access control 画面: GitHub アカウントで認証します

Linuxホストの追加

最初のサービスまたはコンテナを起動する前に、DockerがインストールされたLinuxホストを追加する必要があるとのことで新しいホストを追加します。

認証完了画面
認証完了画面: 新しいホストを追加してほしいとのメッセージが…
  1. の空欄にインスタンス自身のグローバルIPアドレスを入力します。
ホストの追加画面
ホストの追加画面: Custom を選択します
  1. にあるとおり、ボックス内にあるコマンドをCLI上で実行します。
1
 # docker run -e CATTLE_AGENT_IP="*.*.*.*" ...

登録が完了すると インフラストラクチャ -> ホスト から追加したホストの情報を確認できます。ヘルスチェックは時間がかかるのでしばらく放置しておきましょう…。

ホスト一覧
ホスト一覧: 追加したホストが一覧に表示されます

コンテナの起動

ホストの起動ができたのでコンテナも起動してみます。

インフラストラクチャ->コンテナ->コンテナの追加 の順にクリックします。名前とかいい感じに入れて追加します。

コンテナの追加
コンテナの追加: Ubuntuコンテナを追加してみます

起動完了後CLIからログインできるようになります。コンテナのIDを確認後 docker attatch で接続してみます。(ログイン後 / がカレントディレクトリになるのちょっとびっくりしたw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 $ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c7bf2370f26 ubuntu:14.04.3 "/.r/r /bin/bash" 4 minutes ago
:
 $ docker attach 5c7bf2370f26
root@5c7bf2370f26:/#
root@5c7bf2370f26:/# cd ~
root@5c7bf2370f26:~# ls -l
total 0
root@5c7bf2370f26:~# pwd
/root
root@5c7bf2370f26:~#

起動したまま出たいときはC-pの後C-qを押します。ちなみにC-dを押すと止まるので本当注意です!!!!C-d押したらコンテナのStatusがStoppedになってビビったwwwwwwwwオフェwwwwwwwwwww

さいごに

RancherServerの起動までできたものの、後はどう活用するかが悩みどころです。まずWebUIはSSL/TLS通信を経由するように設定したいなぁ…ぼちぼちやっていきたいと思います。

明日18日は hakuya さんですー!

Share on

靴ひも伍長
WRITTEN BY
靴ひも 伍長
Cloud in'腐'rastructure engineer.