IBM Cloudにて、Windowsの仮想サーバー払出し手順書

## 記事の概要
IBM CloudでWindowsの仮想サーバーを払出ししてみた。その手順をまとめました。
最近MacのPCを変えたばかりで、何も入っていないところからのスタートです。

### 本文
IBM Cloudでマイアカウントがあることを前提とします。
まずは、ibmcloudコマンドでログインしようとすると、
```
niwa@niwanoMacBook-Pro ~ % ibmcloud login --sso
zsh: command not found: ibmcloud
```
と、IBM Cloud CLIが入っていない！と怒られました。
そこで、IBM Cloud CLIを入手すべく
```
niwa@niwanoMacBook-Pro ~ % curl -sL https://ibm.biz/idt-installer | bash
```
を行い、以下のように無事入手できました。
```
プラグイン名                               バージョン   状況   サポートされるプライベート・エンドポイント
cloud-functions[wsk/functions/fn]          1.0.70              false
cloud-object-storage                       1.7.0               false
container-registry[cr]                     1.2.2               true
container-service[kubernetes-service/ks]   1.0.540             false
```
では、早速自分のIBMCloudにログインします。ワンタイム・パスワードを取得して、認証を行い、その後対象のアカウントやリージョンを選択していきます。
```
niwa@niwanoMacBook-Pro ~ % ibmcloud login --sso
API エンドポイント: https://cloud.ibm.com

https://identity-1.ap-north.iam.cloud.ibm.com/identity/passcode からワンタイム・コードを取得して、続行します。
デフォルトのブラウザーで URL を開きますか? [Y/n] > y
ワンタイム・コード > 
認証中です...
OK

アカウントを選択:
1. 対象のアカウント
数値を入力してください> 1
ターゲットのアカウント 対象のアカウント

リージョンを選択します (または Enter キーを押してスキップします):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. kr-seo
6. eu-de
7. eu-es
8. eu-gb
9. ca-tor
10. us-south
11. us-south-test
12. us-east
13. br-sao
数値を入力してください> 4
ターゲットのリージョン jp-tok

After 15 September 2023, the CLI will no longer pre-install SoftLayer(sl) commands. To use ibmcloud sl commands, you will need to install the plug-in with 'ibmcloud plugin install sl'. For more information on plug-ins, see https://cloud.ibm.com/docs/cli?topic=cli-plug-ins
                         
API エンドポイント:      https://cloud.ibm.com
Region:                  jp-tok
ユーザー:                自分の名前
アカウント:              対象のアカウント
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください
CF API エンドポイント:   
組織:                    
スペース:                
```
続けて、今回はSSH接続を行うため、公開鍵/秘密鍵を生成します。
まずは、既存の鍵の有無を確認します。あるとしたら、Macユーザーの大体のかたは、/Users/ユーザー名/.ssh の下に、id_rsa（秘密鍵）とid_rsa.pub（公開鍵）があるはずです。
```
niwa@niwanoMacBook-Pro ~ % cd /Users/niwa/.ssh           
niwa@niwanoMacBook-Pro .ssh % ls
known_hosts			podman-machine-default
known_hosts.old			podman-machine-default.pub
```
鍵を持っていなかったので今回新しく作ります。
鍵を作成する際は、ssh-keygenコマンドを用いて作成します。
```
niwa@niwanoMacBook-Pro .ssh % ssh-keygen -m PEM -t rsa -C "user_ID"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/niwa/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/niwa/.ssh/id_rsa
Your public key has been saved in /Users/niwa/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:XXXXXXXXXX
The key's randomart image is:
+---[RSA 3072]----+
|XXXX             |
|XXXX             |
|XXXX             |
|XXXXX            |
|XXXXXXXXX        |
|XXXXXXXXXX       |
|XXXXXXXXXX       |
|XXXXXX           |
|XXXXXX           |
+----[SHA256]-----+
```
無事に作れたことを、確認します。
```
niwa@niwanoMacBook-Pro .ssh % ls
id_rsa				known_hosts.old
id_rsa.pub			podman-machine-default
known_hosts			podman-machine-default.pub
```
公開鍵をWindowサーバーに登録するので、確認してコピーしておきます。
```
niwa@niwanoMacBook-Pro .ssh % cat id_rsa.pub
ssh-rsa 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXX= user_ID
```
では、ここからは、IBM Cloudの画面に行きます。
左側のハンバーガーメニューから「VPC インフラストラクチャー」→「仮想サーバー・インスタンス」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/89f2f9a7-efbb-41cb-2003-f0d89a87d5fc.png)
この画面で実際に仮想サーバーを作っていきます。右側の「作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a964d75b-826c-57b4-5276-da214ddfce6b.png)
仮想サーバーの設定(vCPU/RAMやOSの種類、VPC/セキュリティグループなど)を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/e66537f1-4284-9a84-5250-49eb6fc44439.png)
SSH鍵の設定を行います。その際に、「公開鍵の貼り付け」を選択し、上記で確認した公開鍵を貼り付けます。その後「作成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/bb640fb8-1f3e-2986-2a87-fe0e19ce9db2.png)
作成したのちに、浮動IPの設定も行なっておきます。「浮動IPアドレスの割り当て」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/6c1c2c87-9833-0057-2331-2d857d4f2f5e.png)
VPC用の浮動IPの作成ページに変移するので、「作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/1c91b6e5-510c-3a2b-5c09-43b749e141e0.png)
仮想サーバーを作成したゾーンと同じゾーンを選択し、バインドにて先ほどの仮想サーバーを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/3464acf5-4ead-98e1-b686-04e506a0954e.png)
左側のハンバーガーメニューから、「仮想サーバー・インスタンス」を選択し、払い出した仮想サーバーの浮動IPに作成した浮動IPが付与されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/0ebcf3ea-c462-4ac7-0133-7c53c795293f.png)
この後、払い出した仮想サーバー・インスタンスのパスワードを払い出すために、インスタンスIDが必要になるので、「仮想サーバー・インスタンスID」をコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/e58c559f-9b0e-79bd-21d8-5fe2d2605513.png)

それでは、ターミナルに戻り、まずは仮想サーバー・インスタンスの稼働状況を確認します。
```
niwa@niwanoMacBook-Pro .ssh % ibmcloud is instance "仮想サーバーインスタンスID"
失敗
'is' は登録済みコマンドではありません。 インストール済みプラグインのリストを確認してください。 'ibmcloud help' を参照してください。
```

あれれ、「'is' は登録済みコマンドではありません。」と怒られてしまいました。
追加でプラグインをインストールします。
```
niwa@niwanoMacBook-Pro bin % ibmcloud plugin install vpc-infrastructure
リポジトリー 'IBM Cloud' から 'vpc-infrastructure' を検索しています...
プラグイン 'vpc-infrastructure[infrastructure-service/is] 7.0.0' がリポジトリー 'IBM Cloud' 内で見つかりました
バイナリー・ファイルをダウンロードしようとしています...
 23.47 MiB / 23.47 MiB [======================================================================================] 100.00% 2s
24612178 バイトがダウンロードされました
バイナリーをインストールしています...
OK
プラグイン 'vpc-infrastructure 7.0.0' は /Users/niwa/.bluemix/plugins/vpc-infrastructure に正常にインストールされました。 'ibmcloud plugin show vpc-infrastructure' を使用して詳細を表示してください。
```
では、早速仮想サーバー・インスタンスの稼働状況を確認します。
```
niwa@niwanoMacBook-Pro bin % ibmcloud is instance "仮想サーバー・インスタンスID"
ユーザー XXXXXXXXXX@ibm.com としてアカウント YYYYYYYY の下でインスタンス 仮想サーバー を取得しています...
                                    
ID                             仮想サーバーインスタンスID   
名前                            niwa   
CRN                            XXXXXXXXXXXX   
状況                            running   
ホスト障害時の可用性ポリシー          restart   
開始可能                         true   
プロファイル                      bx2-2x8   
アーキテクチャー                   amd64   
vCPU メーカー                    intel   
vCPU                           2   
メモリー (GiB)                   8   
帯域幅 (Mbps)                   4000   
ボリューム帯域幅 (Mbps)            1000   
ネットワーク帯域幅 (Mbps)          3000   
ライフサイクルの理由             コード   メッセージ      
                               -        -      
                                    
ライフサイクルの状態             stable   
メタデータ・サービス             有効    プロトコル   応答ホップ限界      
                            false   http         1      
                                    
イメージ                         ID                                          名前    
                            XXXXXXXXX   ibm-windows-server-2016-full-standard-amd64-14      
                                    
VPC                              ID                  名前      
                                 XXXXXXXXXX   jp-tok-default-vpc      
                                    
ゾーン                           jp-tok-2   
リソース・グループ               ID                     名前      
                          XXXXX                  Default      
                                    
作成日時                         2023-08-23T19:21:27+09:00   
ネットワーク・インターフェース   インターフェース   名前   ID  サブネット     サブネット ID    浮動 IP セキュリティー・グループ      ソース IP スプーフィングを許可   予約済み IP      
             1 次               eth0   XXXXXXX   skubo-subnet   XXXXXXX   XXX.XXX.XXX.XX   XXXX   false                            XX.XXX.XX.X      
                                    
ブート・ボリューム               ID         名前       接続 ID     接続名      
                        XXXXXX      XXXXXX       XXXXX      XXXX      
```                                    
「runnning」状態だったので、このまま仮想サーバー・インスタンスのパスワードを入手します。
```
niwa@niwanoMacBook-Pro .ssh % ibmcloud is instance-initialization-values 02f7_7884d938-9477-4266-8f3f-4cbadc7fc44c --private-key @~/.ssh/id_rsa
暗号化された秘密鍵のパスフレーズを入力してください。> 
ユーザー XXXXXXX@ibm.com としてアカウント YYYYYYY の下でインスタンス 仮想サーバー のインスタンス初期設定値を取得しています...
                            
鍵                       ID     名前   指紋      
                         XXX   niwa   SHA256:XXXXXX
                            
暗号化されたパスワード   XXXXXXXX  
暗号鍵 CRN               XXXX   
パスワード               XXXX   
```

以上で無事仮想サーバーインスタンスのパスワードを取得することができたので、これを用いてWindowsサーバーへアクセスを行うことができます。