OpenShift Virtualization (OCP-V) - Create VM - Template

### OpenShift Virtualization

Red Hat® OpenShift® Virtualization は Red Hat OpenShift に含まれる機能であり、組織が新規および既存の仮想マシン (VM) ワークロードを実行およびデプロイするための先進的なプラットフォームを提供します。このソリューションにより、従来の仮想マシンを、信頼できる、一貫した包括的なハイブリッドクラウド・アプリケーション・プラットフォームに簡単に移行できます。

OpenShift Virtualization は、VM の移行を単純化するとともに、クラウドネイティブ・アプリケーション・プラットフォームのシンプルさと速度を利用してインフラストラクチャのモダナイゼーションの道筋を提供します。また、先進的な管理の原則を取り入れつつ既存の仮想化への投資を維持することを目指しており、Red Hat の包括的な仮想化ソリューションの基盤となります。

https://www.redhat.com/ja/technologies/cloud-computing/openshift/virtualization

### Creating virtual machines from Red Hat images
OCP 4.17 Bare Metal 環境 OpenShift Virtualization (OCP-V) で Virtual Machine (VM) を作成してみます。ここでは以下の手順を参考に、`Red Hat Image (Red Hat が提供する Golden Image)` から作成してみます。

https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/virtualization/virtual-machines#virt-creating-vms-from-rh-images-overview

> About golden images
A golden image is a preconfigured snapshot of a virtual machine (VM) that you can use as a resource to deploy new VMs. For example, you can use golden images to provision the same system environment consistently and deploy systems more quickly and efficiently. 

なお、今回は触れませんが、独自に作成した `Custom Image` を使用する事もできます。

Creating VMs from custom images

https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/virtualization/virtual-machines#creating-vms-from-custom-images

#### Creating virtual machines from templates
ここでは、`Template` から VM を作成してみます。

Creating virtual machines from templates

https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/virtualization/virtual-machines#virt-about-templates

https://kubevirt.io/user-guide/user_workloads/templates/


OCP Console から Virtualization -> Catalog を表示します。画面が `Template catalog` Tab になっている事を確認します。

左上の Project に VM を作成する Project として `z-ocpv-vmtest-template` を指定した上で、`Boot source available` Check Box を選択します。ここでは、4つの Template が表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/c6f95e76-0a38-4dac-bc0c-0212e2418026.png)

`Red Hat Enterprise Linux 9 VM` Template を選択して、必要な箇所の設定変更を行います。今回は `VirtualMachine name` のみ `rhel9-vm02-template` に変更しています。また、デフォルトで指定されている `DATA_SOURCE_NAME` / `DATA_SOURCE_NAMESPACE` から、Red Hat 提供の Golden Image を使用している事が分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/6b88b259-a81c-4b33-9ec1-abf8abd4c73b.png)

なお、この Template は以下に該当します。
```shell
$ oc get template rhel9-server-small -n openshift
NAME                 DESCRIPTION                                                                        PARAMETERS        OBJECTS
rhel9-server-small   Template for Red Hat Enterprise Linux 9 VM or newer. A PVC with the RHEL disk...   4 (2 generated)   1
```

更に詳細な設定変更を行う場合は `Customize VirtualMachine` ボタンを押して、以下の画面から変更することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/6f9aa67c-8182-4d56-9013-2f89b05dea1b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/865105c7-2d9e-448c-8261-1d1d62c2f5d3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/207bd12e-02a8-4359-a335-020c48d719af.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/213d8bf4-4eb7-493b-9ed8-dafae8cbbb54.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/bf2fc471-dcdb-4163-9b02-0f1360c8c5c4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/626871be-f66d-46b7-b875-3e43909dbacd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/c5f2471e-7cad-4dde-a15b-f75af0b6b870.png)

今回は、これらの画面からの変更は行わずに `Quick create VirtualMachine` ボタンを押して VM を作成します。以下のような画面が表示され、`Status Running` になれば完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/ea258b0b-4cb8-4cfa-b463-b96bb10e0595.png)

指定した Project に以下のようなリソースが作成されます。
```shell
$ oc project -q
z-ocpv-vmtest-template

$ oc get all,pvc
NAME                                          READY   STATUS    RESTARTS   AGE
pod/virt-launcher-rhel9-vm02-template-2lmz9   1/1     Running   0          57s

NAME               TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
service/headless   ClusterIP   None         <none>        5434/TCP   58s

NAME                                             PHASE       PROGRESS   RESTARTS   AGE
datavolume.cdi.kubevirt.io/rhel9-vm02-template   Succeeded   100.0%                58s

NAME                                                     AGE   PHASE     IP             NODENAME   READY
virtualmachineinstance.kubevirt.io/rhel9-vm02-template   57s   Running   10.129.2.147   worker01   True

NAME                                             AGE   STATUS    READY
virtualmachine.kubevirt.io/rhel9-vm02-template   58s   Running   True

NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                                 VOLUMEATTRIBUTESCLASS   AGE
persistentvolumeclaim/rhel9-vm02-template   Bound    pvc-bae2e6d1-54aa-435e-8002-00f1c61c10c2   30Gi       RWX            ocs-storagecluster-ceph-rbd-virtualization   <unset>                 58s

$ oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                              STORAGECLASS                                 VOLUMEATTRIBUTESCLASS   REASON   AGE
pvc-bae2e6d1-54aa-435e-8002-00f1c61c10c2   30Gi       RWX            Delete           Bound    z-ocpv-vmtest-template/rhel9-vm02-template                         ocs-storagecluster-ceph-rbd-virtualization   <unset>                          100s
```