【演習】Bluemix Infrastructureハンズオン【サーバー編】

https://github.com/kkitase/softlayer-handson/tree/master/doc  のBluemix Infrastructureハンズオンに従ってBluemix Infrastructureの演習を行いたいと思います。

ちなみにMacユーザーなので上のテキストと少し作業の勝手が違います。

まずはサーバー編です！

Bluemix Infrastructureでは「物理サーバー（ベアメタル）」を用いた専有環境と「仮想サーバー」を用いた共有環境の双方からサーバーを選択できます。今回のハンズオンでは仮想サーバーを用います。

#ポータルサイトにログイン
[カスターマーポータル](https://control.softlayer.com/)にログインします。

*アカウントを持っていない場合は[評価版](https://www.softlayer.com/promo/free-cloud/)からどうぞ。1ヶ月間無料で所定の構成の仮想サーバーを利用することができます。
（クレジットカードの登録が必要です）

IBM IDを使ってログインします。上の窓ではなく下の「IBM IDアカウントでログイン」からポータルサイトにログインします。（前は上の窓を使っていました）
![スクリーンショット 2017-07-01 8.53.35.png](https://qiita-image-store.s3.amazonaws.com/0/141025/4ec04060-df05-091d-c21b-4dcdc35a7a9b.png)

#サーバーを注文
今回は時間課金(Hourly)の仮想サーバーを注文します。
ポータル画面トップページ中央のデバイスアイコンをクリックし、仮想サーバー（パブリックノード）の時間課金を選択します。
![サーバー注文.png](https://qiita-image-store.s3.amazonaws.com/0/141025/53203b4f-92d5-f63b-9a28-cbf16209696b.png)

ハンズオンテキストに従って最小構成で行きます。
ちょっと試したいならアメリカは安くてオススメです。
データ・センター->SJC01
コンピューティングインスタンス->「Public Instance」1ｘ2.0 GHz
RAM->1GB
OS->CentOS 6.x Minimal Install
　　*ハンズオン中にAPFを扱うので、CentOS7にせずAPFが選べるものにしました。
1st Disk->25GB
アップリンクポート速度->Public&Private 100Mbps
ファイアウォール->APF Software Firewall for Linux
拡張モニタリング->Monitoring Package -Basic
（デフォルトだと「なし」ですが無料なのでつけておくと良いでしょう。）

「注文に追加」を押して確認画面に進みます。
右側のチェックボックスと。下側の「ホストメイトドメイン名」を入力して注文を確定したら数分でサーバーができあがります。
![スクリーンショット 2017-07-01 13.21.46.png](https://qiita-image-store.s3.amazonaws.com/0/141025/0c2606aa-154f-b1c2-b39f-7cff07eb62bf.png)


#サーバーにログイン
WindowsユーザーはTeratermなどを利用してログインするようですが、Macユーザーはターミナルを使えばログインできます。ターミナル上にログインに必要な情報を入力します。

![スクリーンショット 2017-07-01 9.03.18.png](https://qiita-image-store.s3.amazonaws.com/0/141025/7c895a32-6aea-eafc-0670-8554fc0f6406.png)

```
ssh root@(IPアドレス)
```
その後パスワードを求められるのでパスワードを入力します。

#サーバー起動直後のネットワーク構成の確認
ターミナルに#ifconfigと入力しネットワーク状況を確認しましょう。
eth0 にPrivate IPの情報、eth1にGlobal IPの情報が載っているのがわかります。
![スクリーンショット 2017-07-01 9.28.21.png](https://qiita-image-store.s3.amazonaws.com/0/141025/f486ca44-6bb9-22e4-e3fd-2742925acbef.png)

#VLANの確認
ポータル画面の上部の「デバイス」->「デバイスリスト」でオーダーしたリソースの詳細を確認できます。デバイスリストから注文したサーバーを選択し、「構成」タブの中の「ネットワーク」の部分を確認します。
Public VLANとPrivate VALNをそれぞれ確認することができます。
ちなみに、「速度」の部分でネットワークを切断することも可能です。パブリックネットワークを利用しない場合、セキュリティを高めるために切断しておくと良いでしょう。
![ネットワーク.png](https://qiita-image-store.s3.amazonaws.com/0/141025/29ab5e44-e356-f9fd-64d9-c39b357ba938.png)

VLAN欄のリンクをクリックするとVLANの詳細を確認することができます。それぞれがサブネットと関連づけられていることがわかります。
（下の写真はPublic VALNのものです）
![VLAN.png](https://qiita-image-store.s3.amazonaws.com/0/141025/0a31d67a-84ad-3801-543f-6c395074ccf6.png)

サブネット欄のリンクをクリックすると、サブネットの詳細を確認できます。
Public Subnetには8つ、Private Subnetには64つのIPアドレスが振られていることがわかります。
Public SubnetのIPアドレスのうち、3つのIPアドレスはシステムが使っていて、1つは今回注文したサーバーが使っています。残りは同データセンターを使って今後リソースを注文する時用にとってあります。Private Subnetも同様です。

#ファイアウォール設定
注文時に設定したAPF（Advanced Policy Firewall）について見ていきます。
(以下説明文をハンズオン資料より抜粋)
>APFは、Linux標準のiptablesのセキュリティポリシーを管理するツールです。APFはセキュリティ機能の管理に特化したツールとして採用されています。APF自体はファイアウォールの機能を持っておらず、また、ネットワーク機能の設定は実装していません。次はiptablesの設定ですが、理解できるようになるまでかなりの学習コストがかかります。それに対してAPFは、シンプルなコマンドとして実装されており、ポリシーファイルにパラメータを設定するだけでIPアドレスやポートのブロックを簡単に実現できます。

APFを起動してみましょう。
```/etc/init.d/apf start```
サーバーのブート時にAPFが自動起動するように設定しみます。
```chkconfig apf on```
APFの状態を確認してみましょう。動いていればOKです。
Control+Cで終了します。
（もっと見たい時はスペースです）

#APFのポリシー設定
APFでできることを確認します。そのためにApacheをダウンロードします。
```yum install httpd –y```
あとで使うときのための設定もします
```service httpd start```

80番ポートが許可されている状態で、クライアントPCのWebブラウザからPublic IPアドレスに接続します。
```http://<作成したサーバのPublic IP>```
下のような画面が表示されます。
![スクリーンショット 2017-07-01 10.06.56.png](https://qiita-image-store.s3.amazonaws.com/0/141025/8edc6bbe-d655-966f-f2cd-cb8e20716bf1.png)

/etc/apf/conf.apfからインバウンドのポートから80番ポート(HTTP)を削除してみます。
```vi /etc/apf/conf.apf```

viエディタに入って「IG_TCP_CPORTS」を探します。スラッシュを使って```/IG_TCP_CPORTS```で検索します。下のようになっており、20 (ftpデータ), 21 (ftp制御), 22 (SSH), 25 (SMTP), 53 (DNS), 80 (HTTP), 110 (POP3), 143 (IMAP), 443 (HTTPS), 808 (WinHole), 3306 (MySQL) の通信を許可していることがわかります。ここから80番ポートを削除します。
"i"を入力して編集モードに入って編集し、Escキーを押して編集モードを抜けたあと"wq"で保存してviエディタを抜けます。

>Common inbound (ingress) TCP ports
IG_TCP_CPORTS="20,21,22,25,53,80,110,143,443,808,3306"

↓

>Common inbound (ingress) TCP ports
IG_TCP_CPORTS="20,21,22,25,53,110,143,443,808,3306"

APFを再起動します。
```/etc/init.d/apf restart```

新規タブを開いて先程と同様にApacheに接続します。タイムアウト後繋がらないことを確認しましょう。
これはAPFが80番ポートからの接続を遮断しているために起こります。

再びAPFを用いて80番ポートにつながる設定に戻しましょう。
先程と逆のことを行います。
IG_TCP_CPORTSの" "の中に"80"を加えて:wqで保存です。
再びブラウザからApacheにアクセスします。できましたか？

#サーバー設定の変更
ポータルサイトに戻り、トップページ上部の「デバイス」->「デバイスリスト」からサーバーを選びます。
今はいじりませんが、システム欄を見ると「RAM」や「プロセッサー」に変更が加えられることがわかります。
![スクリーンショット 2017-07-01 10.35.29.png](https://qiita-image-store.s3.amazonaws.com/0/141025/fc2492b3-3b04-3e02-da9f-32c075f2dab5.png)

#CLI
Bluemix InfrastructureのCLI(Command Line Interface)を触ってみます。

CentOSはRed Hat系のOSなのでRed Hat式のインストール方法に則ってCLIをダウンロードしていきます。
Bluemix Infrastructureの旧称である「SoftLayer」が出てきますね。その名称をとって、このCLIはSLCLIと呼ばれます。
```$ yum install -y python-setuptools
$ easy_install pip
$ pip install softlayer
$ pip install importlib```

とやろうと思ったけれど、その後の作業をしようとしても、PythonのバージョンとSLCLIのバージョンが合わずに進まない。
SLCLIのバージョンを下げるのがいいと思うのですが、自分は[Python3を導入](http://qiita.com/f-akazawa/items/5ec741f8a5cca999d7b3)してPython環境を最新のSLCLI環境に合わせることに。
Python3導入後
```$ pip install softlayer
$ pip install importlib```
で問題解決。

SLCLIのコマンドを確認します。
```slcli```
CLIの使用方法は
```slcli -h```

ドキュメントとしては[こちら](http://softlayer-python.readthedocs.io/en/latest/index.html)に。

#APIキーの取得
管理ポータル上部の「アカウント」->「ユーザー」でAPIキーを取得します。
初めてAPIキーを取得する場合はAPIキーが「生成」になっているらしいのですが、私はいつのまにか作っていたらしい。多分昔遊んでいた時に。
いずれにせよ押す場所は一緒です。「APIキー」欄をクリックします。
すると新しい窓が出てAPIキーを確認できますのでコピペして保存しておきましょう。
![User.png](https://qiita-image-store.s3.amazonaws.com/0/141025/dd5994af-423b-7215-f962-736d63fb5129.png)

#コマンドクライアントの設定
まず```slicli config show```で現状を確認します。何も設定されていないことがわかります。
![スクリーンショット 2017-07-01 11.12.37.png](https://qiita-image-store.s3.amazonaws.com/0/141025/3468a9de-154c-daf8-5fdd-aa29bb6d7959.png)

```slcli config setup```コマンドで設定していきます。

先ほどのユーザー情報画面のユーザー名をクリックすると、ユーザーに関する詳細な設定が出てくるのですが、そこにAPIアクセス情報が載っていると思いますので、それを元にUsernameとAPI Keyを設定しましょう。API Keyは入力されていますが入力している間は表示されないので、最後に確認画面で確かめましょう。
EndpointとTimeoutはとりあえずデフォルト値で設定。

```Are you sure you want to write settings to "/root/.softlayer"? [Y/n]:```と聞かれるので確認してよければ"Y"、違ったら"n"を入力しましょう。

#コマンドクライアントの利用
```slcli vs list```で仮想サーバーの一覧が表示されます。
![スクリーンショット 2017-07-01 11.28.19.png](https://qiita-image-store.s3.amazonaws.com/0/141025/5882ba7a-e764-6c04-0ddb-fc62f548c9f0.png)

詳細を確認するには ```slcli vs detail (詳細を表示したいサーバーのIPアドレス)```です。
![detail.png](https://qiita-image-store.s3.amazonaws.com/0/141025/8ba36bdb-1263-7f90-4023-b2a37002f041.png)

```slcli vs ceate-options```で、仮想サーバーの注文時に選択できるリソースを確認できます。```slcli vs create --help```で、仮想サーバー注文時のオプションの一覧を確認できます。

これらのコマンドをくっつけることで、指定した条件で仮想サーバーをコマンドラインから作成することが可能です。

#VPN接続
VPN接続をしていきます。
VPN接続を行うには、ブラウザを通して接続する方法とアプリケーションをインストールしてそれを用いて接続する方法があります。
MotionProをインストールしてローカルからワンタッチでVPN接続するためには[こちら](http://qiita.com/ymunemasa/items/b6529774bb361448cdad)をご確認ください。
ブラウザからVPN接続する方法は[こちら](http://qiita.com/takeyan/items/e55146cc15b25309a7cd)

以下、ここではVPN接続に向けたアカウント設定方法のみを解説しておきます。

ブラウザーから接続する場合は、「サポート」->「SSL VPNログイン」で[VPNアクセス](https://www.softlayer.com/jp/VPN-Access)するためのサイトに行きます。
![スクリーンショット 2017-07-01 11.46.16.png](https://qiita-image-store.s3.amazonaws.com/0/141025/16aed2f2-9856-4aa7-95f3-235abfac324d.png)

VPNを使う前にVPN利用のための設定をします。
「アカウント」->「ユーザー」でユーザー設定欄に行き、「VPNアクセス」欄をクリックします。
![VPN.png](https://qiita-image-store.s3.amazonaws.com/0/141025/6e71164f-a400-df68-fab8-98f570e4c3f7.png)

適当な選択肢を選んで設定を保存します。自分はSSLのみを選択。
![スクリーンショット 2017-07-01 11.56.50.png](https://qiita-image-store.s3.amazonaws.com/0/141025/f314a6e2-f47f-7bce-8d1c-d8bf46297f19.png)

SSLとPPTPの違いをハンズオンテキストから引用します。
>SSL-VPN
SSL(Secure Sockets Layer)-VPNは、遠隔地のPCからSoftLayerのプライベートネットワークにセキュアなトンネルを作り、そのトンネルを通してサーバのプラ イベートIPアドレスに接続するものです。SSL-VPNはWebブラウザ（マネメントコンソール）から接続する方法と、専用クライアントから接続する方法があります。

>PPTP-VPN
PPTP(Point to Point Tunneling Protocol)-VPNは、原理的にはSSL-VPNと同じですが、PCや専用デバイス上のクライアントソフトウェアを使います。特に専用クライアン トは必要なく、管理ポータルを開く必要もありません。ただし、OSやOSのパージョンよって接続方法に若干の差があるというのが短所です。

VPN接続するために必要なIDやパスワードはユーザー詳細画面の「VPNユーザー名」「VPNパスワード」欄から確認できます。「VPNパスワード」欄には自分で設定したいパスワードを入力しましょう。

#イメージテンプレート作成
イメージテンプレートは、あるサーバーと同じ構成のサーバーを作るためにとる、サーバーの設定のコピーです。
バックアップのために使う人もいますが、時間を経ると、データの復元時にイメージテンプレートの取得のために使っているソフトウェアのバージョンが変わっていて、復元がうまくいかないということもしばしばありますので、本来推奨されません。（[参照](http://knowledgelayer.softlayer.com/topic/image-templates)(英語)）

「デバイス」->「デバイスリスト」からデバイスの詳細画面に行き右端の「アクション」をクリックして「イメージテンプレートの作成」を選択します。
![ImageT.png](https://qiita-image-store.s3.amazonaws.com/0/141025/d986b0a4-b4d9-667d-f3d3-7d8253ae84b1.png)

GBあたり$0.25/月![スクリーンショット 2017-07-01 12.35.25.png](https://qiita-image-store.s3.amazonaws.com/0/141025/64f0b78f-7648-36e9-573a-81be00fc96cb.png)
かかるので私はやりませんでしたが、必要項目を入力するとイメージテンプレートを作成できます。一度コンピューティング・インスタンスをシャットオフするので、取得するタイミングに気をつけましょう。
![ImageTemplate.png](https://qiita-image-store.s3.amazonaws.com/0/141025/b6fce58b-4cbf-c901-39dd-9f30d1e43eed.png)

これは今までなら物理サーバーでも同じように作成することができていましたが、物理サーバー版は2017年8月を以ってEOSとなることが決定されています。

#仮想サーバーのキャンセル
同じアクションの「デバイスのキャンセル」から仮想サーバーをキャンセルすることができます。
デバイスの詳細に入る前のデバイス一覧上の「アクション」でも削除できますね。
クラウドサーバーは従量課金ですし、パブリックネットワークをきっていなければインターネットと接続されている状態ですので、必要ないリソースは必ず削除するようにしましょう。
![キャンセル.png](https://qiita-image-store.s3.amazonaws.com/0/141025/5d058d2a-180c-aab8-a93d-6ecf9cca57e6.png)

#イメージのキャンセル
不必要なイメージも同様に忘れず削除しましょう。
「デバイス」->「管理」->「イメージ」でイメージの一覧を見ることができます。「アクション」を選択し、削除を選びましょう。
![スクリーンショット 2017-07-01 12.35.25.png](https://qiita-image-store.s3.amazonaws.com/0/141025/383e19ce-35fa-0e78-774d-d1cbcec9b976.png)

#イメージテンプレートからのサーバー起動
サーバー起動には同じくイメージテンプレートの一覧のアクションから「サーバーを注文する」を選択するとできるらしい。自分はやっていないので省略。できたサーバーは今までと同じくデバイスリストに並びます。

#ディスクの追加
ディスクを追加する際はデバイスリストを開き「ストレージ」タブをクリックします。
（これまで頻繁に見ていたのは「構成」タブでした）
「変更」をクリックして、ストレージ容量を変更することができます。
![storage.png](https://qiita-image-store.s3.amazonaws.com/0/141025/f0e8fa08-7660-7308-16ce-778896041540.png)

追加ディスクの設定と更新時刻の設定を行いましょう。システムダウンが必要なので良いタイミングを見計らって変更してください。
![スクリーンショット 2017-07-01 12.53.05.png](https://qiita-image-store.s3.amazonaws.com/0/141025/3b5e22ea-5314-4bae-aa55-bcbf02d4077c.png)

追加したディスクは、　ポータルサイトのトップの「ストレージ」タブのポータルストレージというところから確認できるということですが、上の作業をしなかったからか確認できなかったので省略。
![スクリーンショット 2017-07-01 12.58.05.png](https://qiita-image-store.s3.amazonaws.com/0/141025/df2b8ed6-d438-9690-8c66-fd7ad3eb7059.png)

というわけでこの後拡張ディスクをマウントするとか色々書かれているけれども全部省略。

#KVMコンソール
アクションからKVMコンソールを開き作業することもできます。
しかし、私のPCのJavaの設定と相性が悪いのでこれも省略。
![スクリーンショット 2017-07-01 13.05.31.png](https://qiita-image-store.s3.amazonaws.com/0/141025/4eb3195e-3463-e939-50cd-a82ac1876d15.png)


今回はここまで。
このハンズオンテキストの原本にはこの後Windows Serverを使う上でのあれこれが書かれていますが、そこまでは手を触れずー。

お疲れ様でした！