IBM Cloud VPC Gen 2 でVPC、VSIを作成してみる

# はじめに
IBM Cloud Virtual Private Cloud(VPC)は、IBM Cloud上で他と隔離されたユーザ固有の環境を提供する機能で、名前の通りAWSのVPCに類似する機能になります。IBM Cloudでは従来からVPC機能を提供していましたが、2019年1Qに、ネットワークの最大帯域80Gbps、プロビジョニング時間が1/5に短縮などの特徴を持った第2世代(Gen 2)が利用できるようになりました。

当記事では、Gen 2のVPCを試してみるということで、VPCを新たに作成し、さらにそのVPC内でVirtual Server Instance(VSI)を作成してみます。

# VPCの作成
[VPCの一覧ページ](https://cloud.ibm.com/vpc-ext/network/vpcs)にアクセスします。

「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/8aa113b0-e3ff-6d4b-25c7-e7d382257e6d.png)

「名前」にVPCの名前を入力します。「デフォルト・セキュリティー・グループ」はデフォルトのまま(SSH, pingともに許可)とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/3cbe6511-c3ab-f44b-e6fa-12273db21f6c.png)

VPCにはサブネットが必要となるため、同時にサブネットが作成されます。「名前」に作成するサブネットの名前を入力します。
また、ロケーションはどこでもよいですが、ここでは東京の「東京3」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/9205c083-daeb-b4e8-6448-46a355fac1da.png)

「パブリック・ゲートウェイ」のチェックを「接続済み」にします。これにより、このサブネット内のリソースがインターネットにアクセスできるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/b3b6da63-6379-cc92-69bd-0449bdf0fdc2.png)

ここまで入力し、画面右側の「仮想プライベート・クラウドの作成」ボタンをクリックします。

しばらくすると、以下のように作成したVPCが「使用可能」状態となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/2cb74d7f-70f3-9604-5dc7-3bd53bd3ec96.png)


# VSIの作成
[VSIのプロビジョニングのページ](https://cloud.ibm.com/vpc-ext/provision/vs)にアクセスします。

「名前」にVSIの名前を入力します。
「仮想プライベート・クラウド」では、上記で作成したVPCを選択します。
「ロケーション」は上記で作成したサブネットの「東京3」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/18a658ec-81ad-0c7a-4084-fc958ec306e0.png)

「イメージ」では、VSIのOSイメージを選択します。ここでは Ubuntu の 18.04 LTS を選択します。
VSIのスペックは、あらかじめ用意されているプロファイルの中から選択します。ここではバランス型のBalancedから、「bx2-2x8」という最安のプロファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/238c05c3-a31e-0b0b-841b-84aafd14f61f.png)

VPCのVSIは、初期状態では、rootでの公開鍵認証のSSHでアクセスすることになります。
以下ではそのためのSSH鍵を作成します。

まず、ローカルの端末でキーペアを作成します。作成する鍵は、2048bit または 4096bit のRSA鍵である必要があります。

```
ssh-keygen -t rsa -b 4096 -f id_rsa_vpc
```

上記により、秘密鍵としてid_rsa_vpc、公開鍵としてid_rsa_vpc.pubというファイルが作成されます。

次に、VSI作成画面の「新規鍵」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/bd3259f2-a13e-d102-1d86-20ffb0e3914f.png)

「名前」にSSH鍵の名前を入力します。
「公開鍵」には、先ほど作成したキーペアの公開鍵(id_rsa_vpc.pub)の内容をコピー＆ペーストします。
「SSH鍵の追加」ボタンをクリックし、SSH鍵を作成します。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/52f55dd4-12d7-500e-9298-eda061877225.png">

以下のように、作成したSSH鍵が設定されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/ec3446d1-a196-486f-b199-ac1f165a22c5.png)

デフォルトで100GBのブート・ボリュームが付いていますが、追加のデータ・ボリュームとしてブロック・ストレージを作成・割り当てることができるので割り当ててみます。
「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/5a434698-c152-81df-ae72-42641a0d2466.png)

「名前」にブロック・ストレージ・ボリュームの名前を入力します。
「サイズ」には任意のサイズを設定します。
「自動削除」は「有効」にします。これにより、このVSIが削除されたときに、このボリュームも一緒に削除されるようになります。ボリュームの削除忘れによる不要な課金やデータの残存を防止することができます。
最後に「接続」ボタンをクリックします。
<img width="600" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/92fe5450-0495-c578-5a91-0a2172185765.png">

ここまで設定した内容、および、課金内容を確認したうえで、「仮想サーバー・インスタンスの作成」ボタンをクリックします。
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/54d825ba-1a24-05c5-c108-445a0775630d.png">

しばらく待つと、以下のように作成したVSIが「稼働中」となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/71a9ebd2-5de7-a527-b70b-24c13a433d13.png)


# 浮動IPアドレスの割り当て
VSIを作成しただけだとインターネットからアクセスができないので、浮動IPアドレスを作成して割り当てます。

画面左側のメニューの「浮動IP」を選択し、「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/937b0a0d-2c04-01b8-b6f3-8ff3e98738fb.png)


「浮動IP名」に任意の名前を入力します。
「バインドするインスタンス」では、先ほど作成したVSIを選択し、「IPの予約」ボタンをクリックします。
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/802e4212-69fa-eb55-db33-c63eadf0f4a4.png">

新たにIPアドレスがVSIに割り当てられたので、IPアドレスをメモしておきます。
（以下のスクショで黒く塗りつぶしている箇所にIPアドレスが表示されます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/41eab641-531c-6d2a-571d-79dd56fcff29.png)

# VSIへのSSHアクセスの確認
VSIにSSHでアクセスしてみます。以下のコマンドを実行します。
上記で作成した秘密鍵ファイル、および、メモしたIPアドレスを指定します。

```
ssh -i <秘密鍵ファイルのパス> root@<IPアドレス>
```

割り当てたデータ・ボリュームを確認してみます。

```
root@samplevpc-vsi1:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0  100G  0 disk 
├─vda1 252:1    0  256M  0 part /boot
└─vda2 252:2    0 99.8G  0 part /
vdb    252:16   0  100G  0 disk 
vdc    252:32   0  370K  0 disk 
vdd    252:48   0   44K  0 disk [SWAP]
```

上記のように、``vdb``というデバイス名で割り当てられていることが確認できます。

以上です。

# 追記
作成したVSIのセキュリティ確保として上記の後に実施したことを、別記事「[IBM Cloud VPC Gen 2上のUbuntuサーバのログイン周りのセキュリティ設定](https://qiita.com/hisato_imanishi/items/6c076cef7088f783e994)」にまとめました。