[OCI] Debianのコンピュートインスタンスを作成する

OCIのプラットフォーム・イメージやマーケットプレースには、Oracle LinuxやUbuntu、Alma Linux、Rocky LinuxなどのLinux OSの提供がありますが、現在はDebianのイメージの提供がありません。
なので今回は、カスタム・イメージの作成によりDebianのコンピュートインスタンスを作成してみます。

この記事では、Debianの公式サイトのOSイメージからカスタムイメージ、コンピュートインスタンスを作成し、VNC Viewerでの初回アクセスまでをまとめます。

## 手順
手順は基本的に以下のリンクの通りに進めていきます。
[How to install Debian in OCI](https://learnoci.cloud/how-to-install-debian-in-oci-64e5dddb5034)

1. DebianのOSイメージ(vmdkファイル)をダウンロード
1. オブジェクトストレージにダウンロードしたvmdkファイルをアップロード
1. カスタム・イメージを作成
1. コンピュートインスタンスの作成
1. 作成したインスタンスに接続する

### 1. DebianのOSイメージ(vmdkファイル)をダウンロード
以下のサイトから、DebianのOSイメージをダウンロードする。
[Debian images for VMware and VirtualBox (osboxes.org)](https://www.osboxes.org/debian/#debian-11-vmware)

今回はDebian 11 Bullseye Desktop Images 64bitをダウンロードしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/3dfea2cf-950c-3875-53b7-899926247ef8.png)

### 2. オブジェクトストレージにダウンロードしたvmdkファイルをアップロード
任意のオブジェクトストレージにダウンロードしたvmdkファイルをアップロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/36c701d4-9cb7-92ed-98af-0d71893fed54.png)


### 3. カスタム・イメージを作成
[コンピュート] > [カスタム・イメージ]と遷移し、[イメージのインポート]を選択する。
先程オブジェクトストレージにアップロードしたvmdkファイルから、イメージをインポートする。
オペレーティング・システムは[Debian]を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/7924f113-17a5-ad1a-e61b-92c580ab2b45.png)

※
参考にしたサイトでは、オペレーティング・システムとして[Linux]を選択していましたが、
現在は[Linux]の選択肢はなく、[Debian]が選択できるようになっています。
今回は[Debian]の選択で問題なく稼働確認できました。

### 4. コンピュートインスタンスの作成
コンピュート・インスタンスの作成画面で、[マイ・イメージ]を選び、[カスタム・イメージ]のチェックをした状態で、先ほど作成したカスタム・イメージを選択する。
その他の設定項目は、通常のプラットフォーム・イメージを作成する場合と同様です。
今回は検証として、パブリックサブネットにインスタンスを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/5bd55564-8c08-5b2d-3b6b-4e5615b55b20.png)


無事にインスタンスの作成が成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/97efc8f6-eefc-e214-b5e3-d92e69614589.png)

Oracle Cloud Agentを確認すると、デフォルトでインストールされており、
モニタリングのプラグインもデフォルトで有効化されているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/555066ca-bb70-8867-c729-fa8594b03142.png)

### 5. 作成したインスタンスに接続する
実際にWindows11のクライアント端末からVNC接続する手順を確認します。

#### シリアルコンソール接続の作成
作成したインスタンスはカスタム・イメージのため、初回はローカルコンソール接続をします。
インスタンス詳細ページの[コンソール接続]ページに遷移し、[ローカル接続の作成]を押下します。
SSHキー・ペアをダウンロードして、[コンソール接続の作成]を選択すると、ローカル接続が作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/0dca1fa6-a712-4a54-cabd-62860b1cd7fb.png)

ローカル接続が作成されました。
作成したローカル接続の右端のボタンから[WindowsのVNC接続のコピー]を選択すると、接続用の文字列がコピーされるのでメモ帳などにペーストします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/c9320f92-ff9c-bbf1-9f0e-3dd99da7debd.png)

#### 接続文字列と秘密鍵の準備
先程ダウンロードして秘密鍵は.key形式になっているため、PuTTYgenなどを利用して.ppk形式に変換します。
メモ帳にペーストしておいた接続文字列に2箇所秘密鍵のファイルパスがあるため、修正します。
接続文字列は以下のような形式になっています。
`Start-Job { Echo N | plink.exe -i <秘密鍵のファイルパス> -N -ssh -P 443 -l <コンソール接続のOCID> -L 5905:<インスタンスのOCID>:5905 instance-console.ap-tokyo-1.oci.oraclecloud.com }; sleep 5; plink.exe -i <秘密鍵のファイルパス> -N -L 5900:localhost:5900 -P 5905 localhost -l <インスタンスのOCID>`

#### VNC Viewerでの接続
メモ帳で修正した接続文字列をPowerShellで実行します。
Update cashed key?と聞かれますが、[y]を選択すればセッションが開始します。

セッションが開始したら、VNC Viewerで接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/841c4445-1944-02e0-39c5-26188230f60a.png)

接続できました。初回のPWは osboxes.org です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/a9e0f156-505d-8b95-dfec-b94d88304527.png)

ログインが完了すれば、Debianのデスクトップが表示されます。
ここからは従来と同じようにDebianを使用できる状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357379/b2d32eb2-14fb-fc38-a5f9-21d4887329b5.png)

## まとめ
今回はDebianのコンピュートインスタンスをカスタムイメージから作成しました。
その他のOSについても、基本的には同じ流れでコンピュートインスタンスを作成できます。

## 参考
- [How to install Debian in OCI](https://learnoci.cloud/how-to-install-debian-in-oci-64e5dddb5034)
- [Debian images for VMware and VirtualBox (osboxes.org)](https://www.osboxes.org/debian/#debian-11-vmware)
- [カスタムLinuxイメージのインポート](https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/importingcustomimagelinux.htm)
- [インスタンス・コンソール接続を使用したインスタンスのトラブルシューティング>VNCコンソールへの接続](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/serialconsole.htm#Connecti)