Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (2) 仮想サーバー作成

# はじめに
ここでは実際にWazi aaS 仮想サーバーを作成する手順を見ていきます。

## 関連記事


[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (1) 概要](https://qiita.com/tomotagwork/items/487d91ea8ddfb50e7257)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (2) 仮想サーバー作成](https://qiita.com/tomotagwork/items/9cea4c804f260d609eed)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (3) ネットワーク構成](https://qiita.com/tomotagwork/items/be2803e504b87cf364e5)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (4) Wazi aaS への接続](https://qiita.com/tomotagwork/items/b59717d767a91628b825)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (5) Stock Iamge確認](https://qiita.com/tomotagwork/items/40b7eaec61e31f830cbe)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (6) Stock Iamge基本操作/カスタマイズ](https://qiita.com/tomotagwork/items/0f2e914fd6263f2b40db)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7) Wazi Image Builder](https://qiita.com/tomotagwork/items/fcfd295aaa54fa597c4b)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (7)' Wazi Image Builder - Trouble Shootingメモ](https://qiita.com/tomotagwork/items/fd804734595644a09d47)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (8) Wazi aaS仮想サーバーの複製](https://qiita.com/tomotagwork/items/ef23025b1ca3800b73c1)
[Wazi aaS: クラウド上でのメインフレーム開発環境構築 - (9) TerraformによるWazi aaS仮想サーバーの管理](https://qiita.com/tomotagwork/items/883652c1534d12f2b042)

# IBM Cloud補足

IBM Cloudの基本的な概念について補足しておきます。

## ロケーション
クラウド上とは言っても物理的にどこのサーバーを利用するかは意識する必要があります。主に以下のような概念があります。

**リージョン**: データセンターのある地域(東京、大阪、ダラス、...など)
**ゾーン**: 電源設備やサーバーなどを提供する一まとまりの施設(≒データセンター)。

リージョンによって使用できるサービスが一部異なります。

参考:[リソースをデプロイするリージョンおよびデータ・センターのロケーション](https://cloud.ibm.com/docs/overview?topic=overview-locations)

## VPC
IBM Cloudには仮想的なプライベート・クラウド環境を提供するVPC(Virtual Private Cloud)と呼ばれる概念があります。これによにサーバー、ストレージなどを論理的に独立した仮想的なサブネット上に構成することができます。Wazi aaSはこのVPC上の仮想サーバーとして構成されます。
参考: [VPC概要](https://cloud.ibm.com/docs/vpc?topic=vpc-about-vpc)

## リソース・グループ

VPC上に仮想サーバーやストレージなどを構成する際、それら構成されたリソースに対してアクセス制御を容易に行うために、用途の同じリソースをグループ化して管理することができます。そのグループ化の単位をリソース・グループと呼んでいます。
Wazi aaSはVPC上の仮想サーバー = リソースの1つですので、作成時にリソース・グループに紐づけすることができます。
参考: [リソースを編成してアクセス権限を割り当てるためのベスト・プラクティス](https://cloud.ibm.com/docs/account?topic=account-account_setup)


# Wazi aaS 仮想サーバー作成手順例
基本的には以下のガイドの記述に従って操作していきます。
参考: [Using the IBM Cloud console to create z/OS virtual server instances](https://www.ibm.com/docs/en/wazi-aas/1.0.0?topic=czvicv-using-cloud-console-create-zos-virtual-server-instances)

一般的なVPCの構成については以下の記事も分かりやすいと思います。
参考: [IBM Cloud Virtual Private Cloud (VPC) 構築実践チュートリアル](https://qiita.com/6onoda/items/06f9a4b1090d05ea0813)

## キーペア作成
Wazi aaSの仮想サーバーにアクセスする際には、鍵認証によるSSH接続が必要になります。そのため、まずはじめに鍵認証に使用するキー・ペアを作成し、IBM Cloudに登録しておく必要があります。

PC上でキーペアを作成する必要がありますが、例えばWindowsであればWSLの環境のOpenSSHを使用してssh-keygenコマンドでキーペアを作成できます。
※下の例ではWSLでssh-keygen実行してますが、Windows10くらいから標準でOpenSSH含まれてるので普通にssh-keygenコマンド打てるらしい。昔からCygwinセットアップしてるから気づかなかった...

```xxx:キーペア作成例
user01@IBM-PF3ALW3Q:~/temp$ ssh-keygen -t rsa -b 4096 -f ./id_rsa_wazi
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./id_rsa_wazi
Your public key has been saved in ./id_rsa_wazi.pub
The key fingerprint is:
SHA256:4GxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxU user01@IBM-PF3ALW3Q
The key's randomart image is:
+---[RSA 4096]----+
|      .+o       E|
...
|        .o+o.*+. |
+----[SHA256]-----+

user01@IBM-PF3ALW3Q:~/temp$ ls -la | grep wazi
-rw-------  1 user01 user01 3381 Mar 25 13:03 id_rsa_wazi
-rw-r--r--  1 user01 user01  745 Mar 25 13:03 id_rsa_wazi.pub
```

これで、秘密鍵:`id_rsa_wai`、公開鍵:`id_rsa_wazi.pub`が生成されました。




## 仮想サーバー作成

ブラウザからIBM Cloudにログインし、適切なアカウントに変更します。
ここでは、リソース・グループは作成済みの想定で、VPC仮想サーバーの作成から行っていきます。

IBM Cloudの左上のメニューアイコンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/7d875286-41d5-851f-c524-f2ba8ace316e.png)

プルダウンメニューからVPCインフラストラクチャー - 仮想サーバー・インスタンスを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/9f15371a-7acb-64cf-ea74-dc62697d522b.png)

作成ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/e7410735-861a-d67c-ebe9-4cf50343847a.png)

仮想サーバー作成画面に遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/cd9d5ee8-d1e7-35b1-f7e8-17ac6ff3c867.png)

この画面にて作成したい仮想サーバーの各種設定を行っていくことになりますが、設定項目ごとに個別にみていきます。

### サーバー・タイプの選択

アーキテクチャは「IBM Z、LinuxONE」(s390xアーキテクチャー) を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/4608268c-58ff-4222-9183-a34459494095.png)

ホスティング・タイプは「パブリック」のみ選択可能です。

### ロケーションの選択

仮想サーバーを作成するロケーションをプルダウンから選択します。ここでは以下のように東京を選択します。
地域: アジア太平洋
リージョン: 東京
ゾーン: 東京1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d60b8373-a5a9-2954-f57f-46091e385202.png)

### 詳細情報の設定

仮想サーバーの名前や、リソース・グループなどを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6f5c68ed-3c2c-7697-fc46-96e02adfd349.png)

※ここで指定する名前、リソース・グループ、タグなどの値はIBM Cloud環境の管理者に適宜確認し利用環境に合わせて設定してください。

### オペレーティング・システムの選択

以下のように、提供されているストック・イメージを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c8926a48-0598-c649-8dde-9f28155edaeb.png)

**イメージ・タイプ**: ストック・イメージ
"ストック・イメージ"を選択すると、製品が提供する出来合いのz/OSイメージを使用することになります。(IBM Wazi Image Builderを使って実際のz/OSのイメージを元に独自のカスタム・イメージを作成/登録している場合は、"カスタム・イメージ"を選択して、独自のカスタム・イメージを使用することもできます。)

**オペレーティング・システム**: IBM z/OS
今回はz/OSを使用する想定なので、z/OSを選択します。
(zLinuxを使用したい場合はここで"SUSE Linux Enterprise Server" もしくは "Ubuntu Linux"が選択できます)

**バージョン**: ibm-zos-2-4-s390x-dev-test-wazi-x
※2023年6月時点では、ストック・イメージとして選択できるのは、以下の2バージョンです。
- z/OS V2.5:  ibm-zos-2-5-s390x-dev-test-wazi-x
- z/OS V2.4: ibm-zos-2-4-s390x-dev-test-wazi-x

※ストック・イメージ名の末尾の数字はストック・イメージのバージョンを示します。
含まれているS/Wのレベルなどは以下参照。
参考: 
[Change log for z/OS stock images](https://www.ibm.com/docs/en/wazi-aas/1.0.0?topic=vpc-change-log-zos-stock-images)
[Configurations in z/OS stock images](https://www.ibm.com/docs/en/wazi-aas/1.0.0?topic=vpc-configurations-in-zos-stock-images)

### プロファイルの選択
仮想サーバーに割り当てるH/Wのスペックを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d5b3d4c1-7a4d-6b04-cdec-34da4aafb780.png)

最低限vCPU:2, RAM:16GB 以上を選択するようにしてください。(仮想サーバー作成時にもっと低いスペックのプロファイルも選択できてしまいますが、CPUやメモリが足りないとうまく稼働しない場合があるようです)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/227ea79d-409f-6c3f-969f-166e1c8cc0d1.png)

参考: 
>Note: z/OS VSIs require a minimum profile of 2 vCPUs x 16 GB RAM (2x16). When you select the profile for any z/OS stock images with RAM smaller than 8 GB, you might encounter the IAR057D message. For more information, see [IAR057D](https://www.ibm.com/docs/en/zos/2.5.0?topic=messages-iar057d) 

VSIとしてのCPU数-1 がz/OSに割り当てられることになります(2vCPUの仮想サーバーを構築した場合z/OSとしては1CPUが使用可能)。
また、メモリについてはVSIとしてのメモリサイズ-3GBがz/OSに割り当てられることになります(16GBのメモリを指定した場合z/OSとしては13GBが使用可能)
※使用するプロファイルによってコストが大きく異なりますのでご注意ください。

### SSH鍵の設定

SSH鍵の作成ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bc38ec02-30f8-3a7f-6ccb-fb6b7b9a2b00.png)

先に作成したキーペアの公開鍵の内容を貼り付けて、公開鍵を登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d174f3c6-3cd0-fd34-a9be-1b3853731a4d.png)

上で登録した公開鍵を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/033a7238-3084-9577-dd1c-7d31f90bdcca.png)

### ブート・ボリュームの設定

デフォルトではブート・ボリュームのサイズが185GBとなっています。必要に応じて変更します(最大250GBまで指定可能)。

右端の編集ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/9d6f2192-60d8-5c2f-8be8-1068d243f0fb.png)

必要なサイズに変更して保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/f1fd9f98-39eb-360e-938b-750f606d90a8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/04879015-0859-a70b-b866-ee7e8b498577.png)

※Wazi aasは内部的な実装としてはzLinux上のz/OSエミュレーター(VDT)がベースになっていると思われるため、ここで言うブート・ボリュームのサイズはベースになっているzLinuxに関連するものと推察されます。z/OSとしてはz/OSのSYSRESボリュームのサイズをイメージしてしまいますが、ここでいうブート・ボリュームのサイズはz/OSとしてのSYSRESのサイズに直結するわけではありません。
ベースとなっている(と思われる)zLinuxのブート・ボリュームの使用方法は完全に隠蔽されているために明確にはどう使われるのかが分かりませんが、なるべく余裕はあった方がよいと思われるのと、ここのディスクサイズでのコスト増は微々たるものなので、最大250GBまで増やしておくのがよいと思います。
vCPU:2, RAM:16GB,ブート・ボリューム:185GBの場合 => $3891.53/月
vCPU:2, RAM:16GB,ブート・ボリューム:250GBの場合 => $3897.41/月
差分: $5.88/月 くらい

### データ・ボリュームの作成

作成したWazi aaS環境に、大量のデータや開発環境に必要なプログラムなどを移植して使用したいという場合、DASDを追加することになります。その追加したいDASDの分だけ、データ・ボリューム(Block Storage)を追加しておく必要があります。
ここで作成するデータ・ボリューム1つが、z/OS上では1つのDASDとして特定のアドレスにアタッチされることになります。
仮想サーバー作成後に後からデータ・ボリュームを追加することも可能です。

データ・ボリューム欄の作成ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/97dd2611-8449-deff-5ca9-715601b4884d.png)

必要なサイズを指定してデータ・ボリュームを作成します(ここでは500GBのデータ・ボリュームを追加)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/d56aa97e-0eb9-0b00-a74b-931ecb4625f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/8d5d25e1-59b1-87e0-e70f-9752eb43b855.png)

<font color="red">※注意</font>
ここで作成したデータ・ボリューム(Block Storage)の単位が、Wazi aaS上では1つのDASDとしてアタッチされます。つまり上の例で言うと500GBのサイズのDASDが1つ特定のアドレスにアタッチされることになります。
65,520シリンダー(≒55GB)を超えるサイズのDASDを扱う場合は、z/OS側ではEAV(Extended Address Volume)という機能が使われますので、65,520シリンダーを超えるエリアを使用する際にはEAV用の設定が必要になります(PARMLIB IGDSMSxxでのUSEEAV=YES指定やBREAKPOINTVALUE指定、JCL DDステートメントでのEATTRオプション指定など)。
EAVを使用したくなければ、データ・ボリューム(Block Storage)の作成単位を55GB以下にしておくことをおすすめします。

ただし、以下の通り1インスタンスで使用できるデータ・ボリュームの数には制限がありますのでそちらもご注意ください(12個は少ない...)。
参考: [Block Storage for VPC の概要](https://cloud.ibm.com/docs/vpc?topic=vpc-block-storage-about&interface=ui)
>Block Storage for VPC は、インスタンスの作成時にブート・ボリュームとしてインスタンスに接続するか、または 2 次データ・ボリュームとして接続する、ブロック・レベルのボリュームを提供します。 リージョン内のアカウントごとに最大 300 個の Block Storage for VPC ボリュームを構成できます。 このクォータの引き上げを要求するには、[サポート Case を開き](https://cloud.ibm.com/docs/vpc?topic=vpc-manage-storage-limit)、さらに多くのボリュームを必要とするゾーンを指定してください。
一度に 1 つの仮想サーバー・インスタンスに接続できるブート・ボリュームは 1 つのみですが、**最大 12 個の Block Storage for VPC データ・ボリュームを単一インスタンスに接続できます。** その他の制限については、[『ボリューム接続の制限』](https://cloud.ibm.com/docs/vpc?topic=vpc-attaching-block-storage&interface=ui#vol-attach-limits)を参照してください。

1VOL:50GBにするとして、12個までとなると 50GB x 12 = 600GB くらいです。これ以上必要ということであればEAVの利用を検討する必要があります。

参考: [Configuring additional disk volumes for z/OS virtual server instances](https://www.ibm.com/docs/en/wazi-aas/1.0.0?topic=czvicv-configuring-additional-disk-volumes-zos-virtual-server-instances)

>If your z/OS instance is created by using one of the IBM-provided z/OS stock images, the size of the new block storage volume must not exceed 55 GB. The storage volumes larger than 55 GB are considered to be Extended Address Volumes (EAV). To work around this restriction and use larger volumes, you must run the command SETSMS USEEAV(YES) on the z/OS instance before you attach a larger block storage device. If you are using EAV volumes, you must also ensure the intended use case for the additional volume supports EAV.
In addition to running the command SETSMS USEEAV(YES), you also need to harden this new system setting in system parmlib in case the z/OS system is shut down and re-IPLed. Otherwise, the setting might be reverted to the default USEEAV(NO).




### ネットワーキング(VPCの設定)

仮想サーバーを作成するVPCを指定します。(明示的に作成したい場合は"VPCの作成"から作成します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c4647d18-e4ba-5c20-b6e6-3565635f8a89.png)

### ネットワーク・インターフェース

仮想サーバーに割り当てるネットワーク・インターフェースの設定を行います。
ここではデフォルト設定をそのまま使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/418da036-b251-6905-e873-19613818991a.png)

※使用するVPC、サブネットなどはIBM Cloud環境の管理者に適宜確認し利用環境に合わせて設定してください。


### まとめ

全体としては以下のような設定を行って、最後に「仮想サーバーの作成」ボタンをポチっと押すと、指定した内容で仮想サーバーが立ち上がるということになります。

<details><summary><font color="blue">全体画面イメージ</font></summary><div>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/1e4d3918-94b8-ca7b-b3d7-68fcfa0104d3.png)

</div></details>

# 確認

VPC用の仮想サーバー・インスタンスの一覧画面に、上で作成したWazi aaSインスタンスのエントリーが表示されればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/fda6f28d-f444-7869-ce1b-59c375d2189f.png)