7.15.4.4. CLI を使用した仮想マシンのインポート
Secret
および VirtualMachineImport
カスタムリソース (CR) を作成して、CLI で仮想マシンをインポートできます。Secret
CR は RHV Manager の認証情報および CA 証明書を保存します。VirtualMachineImport
CR は仮想マシンのインポートプロセスのパラメーターを定義します。
オプション: VirtualMachineImport
CR とは別に ResourceMapping
CR を作成できます。ResourceMapping
CR は、追加の RHV 仮想マシンをインポートする場合などに柔軟性を提供します。
デフォルトのターゲットストレージクラスは NFS である必要があります。Cinder は RHV 仮想マシンのインポートをサポートしません。
手順
以下のコマンドを実行して
Secret
CR を作成します。$ cat <<EOF | oc create -f - apiVersion: v1 kind: Secret metadata: name: rhv-credentials namespace: default 1 type: Opaque stringData: ovirt: | apiUrl: <api_endpoint> 2 username: ocpadmin@internal password: 3 caCert: | -----BEGIN CERTIFICATE----- 4 -----END CERTIFICATE----- EOF
$ openssl s_client -connect :443 -showcerts < /dev/null
オプション: 以下のコマンドを実行して、リソースマッピングを
VirtualMachineImport
CR から分離する必要がある場合にResourceMapping
を作成します。$ cat <<EOF | kubectl create -f - apiVersion: v2v.kubevirt.io/v1alpha1 kind: ResourceMapping metadata: name: resourcemapping_example namespace: default spec: ovirt: networkMappings: - source: name: <rhv_logical_network>/<vnic_profile> 1 target: name: <target_network> 2 type: pod storageMappings: 3 - source: name: <rhv_storage_domain> 4 target: name: <target_storage_class> 5 volumeMode: <volume_mode> 6 EOF
- 1
- RHV の論理ネットワークおよび vNIC プロファイルを指定します。
- 2
- OpenShift Virtualization ネットワークを指定します。
- 3
- ストレージマッピングが
ResourceMapping
およびVirtualMachineImport
CR の両方に指定される場合、VirtualMachineImport
CR が優先されます。 - 4
- RHV ストレージドメインを指定します。
- 5
nfs
またはocs-storagecluster-ceph-rbd
を指定します。- 6
ocs-storagecluster-ceph-rbd
ストレージクラスを指定した場合、Block
をボリュームモードとして指定する必要があります。
以下のコマンドを実行して
VirtualMachineImport
CR を作成します。$ cat <<EOF | oc create -f - apiVersion: v2v.kubevirt.io/v1beta1 kind: VirtualMachineImport metadata: name: vm-import namespace: default spec: providerCredentialsSecret: name: rhv-credentials namespace: default # resourceMapping: 1 # name: resourcemapping-example # namespace: default targetVmName: vm_example 2 startVm: true source: ovirt: vm: id: <source_vm_id> 3 name: <source_vm_name> 4 cluster: name: <source_cluster_name> 5 mappings: 6 networkMappings: - source: name: <source_logical_network>/<vnic_profile> 7 target: name: <target_network> 8 type: pod storageMappings: 9 - source: name: <source_storage_domain> 10 target: name: <target_storage_class> 11 accessMode: <volume_access_mode> 12 diskMappings: - source: id: <source_vm_disk_id> 13 target: name: <target_storage_class> 14 EOF
- 1
ResourceMapping
CR を作成する場合、resourceMapping
セクションのコメントを解除します。- 2
- ターゲットの仮想マシン名を指定します。
- 3
- ソース仮想マシン ID を指定します (例:
80554327-0569-496b-bdeb-fcbbf52b827b
)。Manager マシンの Web ブラウザーでhttps://www.example.com/ovirt-engine/api/vms/
を入力して仮想マシン ID を取得し、すべての仮想マシンを一覧表示できます。インポートする仮想マシンとその対応する仮想マシン ID を見つけます。仮想マシン名またはクラスター名を指定する必要はありません。 - 4
- ソース仮想マシン名を指定する場合、ソースクラスターも指定する必要があります。ソース仮想マシン ID は指定しないでください。
- 5
- ソースクラスターを指定する場合、ソース仮想マシン名も指定する必要があります。ソース仮想マシン ID は指定しないでください。
- 6
ResourceMapping
CR を作成する場合、mappings
セクションをコメントアウトします。- 7
- ソース仮想マシンの論理ネットワークおよび vNIC プロファイルを指定します。
- 8
- OpenShift Virtualization ネットワークを指定します。
- 9
- ストレージマッピングが
ResourceMapping
およびVirtualMachineImport
CR の両方に指定される場合、VirtualMachineImport
CR が優先されます。 - 10
- ソースストレージドメインを指定します。
- 11
- ターゲットストレージクラスを指定します。
- 12
ReadWriteOnce
、ReadWriteMany
、またはReadOnlyMany
を指定します。アクセスモードが指定されていない場合、{virt} は RHV 仮想マシンまたは仮想ディスクアクセスモード上の HostMigration mode 設定に基づいて正しいボリュームアクセスモードを判別します。 -
RHV 仮想マシン移行モードが
Allow manual and automatic migration
の場合、デフォルトのアクセスモードはReadWriteMany
になります。 -
RHV 仮想ディスクのアクセスモードが
ReadOnly
の場合、デフォルトのアクセスモードはReadOnlyMany
になります。 -
その他のすべての設定では、デフォルトのアクセスモードは
ReadWriteOnce
です。
-
RHV 仮想マシン移行モードが
- 13
- ソース仮想マシンディスク ID を指定します (例:
8181ecc1-5db8-4193-9c92-3ddab3be7b05
)。Manager マシンの Web ブラウザーでhttps://www.example.com/ovirt-engine/api/vms/vm23
を入力して仮想マシンの詳細を確認し、ディスク ID 取得できます。 - 14
- ターゲットストレージクラスを指定します。
仮想マシンインポートの進捗に従い、インポートが正常に完了したことを確認します。
$ oc get vmimports vm-import -n default
インポートが成功したことを示す出力は、以下のようになります。
出力例
... status: conditions: - lastHeartbeatTime: "2020-07-22T08:58:52Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: Validation completed successfully reason: ValidationCompleted status: "True" type: Valid - lastHeartbeatTime: "2020-07-22T08:58:52Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: 'VM specifies IO Threads: 1, VM has NUMA tune mode specified: interleave' reason: MappingRulesVerificationReportedWarnings status: "True" type: MappingRulesVerified - lastHeartbeatTime: "2020-07-22T08:58:56Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: Copying virtual machine disks reason: CopyingDisks status: "True" type: Processing dataVolumes: - name: fedora32-b870c429-11e0-4630-b3df-21da551a48c0 targetVmName: fedora32
7.15.4.4.1. 仮想マシンをインポートするための設定マップの作成
デフォルトの vm-import-controller
マッピングを上書きする場合や、追加のマッピングを追加する場合は、Red Hat Virtualization (RHV) 仮想マシンオペレーティングシステムを OpenShift Virtualization テンプレートにマップする設定マップを作成できます。
デフォルトの vm-import-controller
設定マップには、以下の RHV オペレーティングシステムおよびそれらの対応する共通の OpenShift Virtualization テンプレートが含まれます。
RHV 仮想マシンオペレーティングシステム | OpenShift Virtualization テンプレート |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
手順
Web ブラウザーで、
http://<RHV_Manager_FQDN>/ovirt-engine/api/vms/<VM_ID>
に移動して RHV 仮想マシンオペレーティングシステムの REST API 名を特定します。以下の例のように、オペレーティングシステム名が XML 出力の<os>
セクションに表示されます。... <os> ... <type>rhel_8x64</type> </os>
利用可能な OpenShift Virtualization テンプレートの一覧を表示します。
$ oc get templates -n openshift --show-labels | tr ',' '\n' | grep os.template.kubevirt.io | sed -r 's#os.template.kubevirt.io/(.*)=.*#\1#g' | sort -u
出力例
fedora31 fedora32 ... rhel8.1 rhel8.2 ...
- RHV 仮想マシンオペレーティングシステムに一致する OpenShift Virtualization テンプレートが利用可能なテンプレートの一覧に表示されない場合は、OpenShift Virtualization Web コンソールでテンプレートを作成します。
RHV 仮想マシンオペレーティングシステムを OpenShift Virtualization テンプレートにマップするために設定マップを作成します。
$ cat <<EOF | oc create -f - apiVersion: v1 kind: ConfigMap metadata: name: os-configmap namespace: default 1 data: guestos2common: | "Red Hat Enterprise Linux Server": "rhel" "CentOS Linux": "centos" "Fedora": "fedora" "Ubuntu": "ubuntu" "openSUSE": "opensuse" osinfo2common: | "<rhv-operating-system>": "<vm-template>" 2 EOF
設定マップの例
$ cat <<EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: os-configmap namespace: default data: osinfo2common: | "other_linux": "fedora31" EOF
カスタム設定マップが作成されていることを確認します。
$ oc get cm -n default os-configmap -o yaml
vm-import-controller-config
設定マップにパッチを適用し、新規設定マップを適用します。$ oc patch configmap vm-import-controller-config -n openshift-cnv --patch '{ "data": { "osConfigMap.name": "os-configmap", "osConfigMap.namespace": "default" 1 } }'
- 1
- 設定マップで namespace を変更した場合は、namespace を更新します。
テンプレートが OpenShift Virtualization Web コンソールに表示されることを確認します。
-
サイドメニューから Workloads
Virtualization をクリックします。 - Virtual Machine Templates タブをクリックして、一覧でテンプレートを見つけます。
-
サイドメニューから Workloads