8.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 仮想マシンのインポートをサポートしません。

手順

  1. 以下のコマンドを実行して 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
    1
    オプション。すべての CR に異なる namespace を指定できます。
    2
    RHV Manager の API エンドポイントを指定します(例: \"https://www.example.com:8443/ovirt-engine/api")。
    3
    ocpadmin@internal のパスワードを指定します。
    4
    RHV Manager CA 証明書を指定します。以下のコマンドを実行して CA 証明書を取得できます。
    $ openssl s_client -connect :443 -showcerts < /dev/null
  2. オプション: 以下のコマンドを実行して、リソースマッピングを 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 をボリュームモードとして指定する必要があります。
  3. 以下のコマンドを実行して 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
    ReadWriteOnceReadWriteMany、または ReadOnlyMany を指定します。アクセスモードが指定されていない場合、{virt} は RHV 仮想マシンまたは仮想ディスクアクセスモード上の HostMigration mode 設定に基づいて正しいボリュームアクセスモードを判別します。
    • RHV 仮想マシン移行モードが Allow manual and automatic migration の場合、デフォルトのアクセスモードは ReadWriteMany になります。
    • RHV 仮想ディスクのアクセスモードが ReadOnly の場合、デフォルトのアクセスモードは ReadOnlyMany になります。
    • その他のすべての設定では、デフォルトのアクセスモードは ReadWriteOnce です。
    13
    ソース仮想マシンディスク ID を指定します (例: 8181ecc1-5db8-4193-9c92-3ddab3be7b05)。Manager マシンの Web ブラウザーで https://www.example.com/ovirt-engine/api/vms/vm23 を入力して仮想マシンの詳細を確認し、ディスク ID 取得できます。
    14
    ターゲットストレージクラスを指定します。
  4. 仮想マシンインポートの進捗に従い、インポートが正常に完了したことを確認します。

    $ 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

8.15.4.4.1. 仮想マシンをインポートするための設定マップの作成

デフォルトの vm-import-controller マッピングを上書きする場合や、追加のマッピングを追加する場合は、Red Hat Virtualization (RHV) 仮想マシンオペレーティングシステムを OpenShift Virtualization テンプレートにマップする設定マップを作成できます。

デフォルトの vm-import-controller 設定マップには、以下の RHV オペレーティングシステムおよびそれらの対応する共通の OpenShift Virtualization テンプレートが含まれます。

表8.7 オペレーティングシステムおよびテンプレートのマッピング

RHV 仮想マシンオペレーティングシステムOpenShift Virtualization テンプレート

rhel_6_10_plus_ppc64

rhel6.10

rhel_6_ppc64

rhel6.10

rhel_6

rhel6.10

rhel_6x64

rhel6.10

rhel_6_9_plus_ppc64

rhel6.9

rhel_7_ppc64

rhel7.7

rhel_7_s390x

rhel7.7

rhel_7x64

rhel7.7

rhel_8x64

rhel8.1

sles_11_ppc64

opensuse15.0

sles_11

opensuse15.0

sles_12_s390x

opensuse15.0

ubuntu_12_04

ubuntu18.04

ubuntu_12_10

ubuntu18.04

ubuntu_13_04

ubuntu18.04

ubuntu_13_10

ubuntu18.04

ubuntu_14_04_ppc64

ubuntu18.04

ubuntu_14_04

ubuntu18.04

ubuntu_16_04_s390x

ubuntu18.04

windows_10

win10

windows_10x64

win10

windows_2003

win10

windows_2003x64

win10

windows_2008R2x64

win2k8

windows_2008

win2k8

windows_2008x64

win2k8

windows_2012R2x64

win2k12r2

windows_2012x64

win2k12r2

windows_2016x64

win2k16

windows_2019x64

win2k19

windows_7

win10

windows_7x64

win10

windows_8

win10

windows_8x64

win10

windows_xp

win10

手順

  1. Web ブラウザーで、http://<RHV_Manager_FQDN>/ovirt-engine/api/vms/<VM_ID> に移動して RHV 仮想マシンオペレーティングシステムの REST API 名を特定します。以下の例のように、オペレーティングシステム名が XML 出力の <os> セクションに表示されます。

    ...
    <os>
    ...
    <type>rhel_8x64</type>
    </os>
  2. 利用可能な 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
    ...

  3. RHV 仮想マシンオペレーティングシステムに一致する OpenShift Virtualization テンプレートが利用可能なテンプレートの一覧に表示されない場合は、OpenShift Virtualization Web コンソールでテンプレートを作成します。
  4. 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
    1
    オプション: namespace パラメーターの値を変更できます。
    2
    以下の例のように、RHV オペレーティングシステムおよび対応する仮想マシンテンプレートの REST API 名を指定します。

    設定マップの例

    $ cat <<EOF | oc apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: os-configmap
      namespace: default
    data:
      osinfo2common: |
        "other_linux": "fedora31"
    EOF

  5. カスタム設定マップが作成されていることを確認します。

    $ oc get cm -n default os-configmap -o yaml
  6. 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 を更新します。
  7. テンプレートが OpenShift Virtualization Web コンソールに表示されることを確認します。

    1. サイドメニューから WorkloadsVirtualization をクリックします。
    2. Virtual Machine Templates タブをクリックして、一覧でテンプレートを見つけます。