Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3.5. スクリプト化された v2v の一括処理

一括してインポートを行うシナリオでは、スクリプト化された v2v プロセスを単一のホストから実行できるので有利です。Red Hat Enterprise Virtualization Manager に対するリモートのプロシージャコールは、REST API を使用して実行することができます。これにより、単一の Linux ホストで単一のスクリプトを実行して、v2v プロセスの両ステップを実行することができます。図4.5「スクリプト化された v2v の一括処理」 は、このスクリプトによって実行されるステップを図解しています。
スクリプト化された v2v の一括処理

図4.5 スクリプト化された v2v の一括処理

図4.5「スクリプト化された v2v の一括処理」 に示したように、スクリプト化された v2v の一括処理は、以下のようなステップを伴います。
  1. インポート元のハイパーバイザーから仮想マシンのイメージを取得します。
  2. 仮想マシンのイメージをパッケージ化して、エクスポートストレージドメインにコピーします。
  3. Red Hat Enterprise Virtualization Manager に対してリモートプロシージャコールを実行し、仮想マシンをインポートするように指示します。
  4. Manager がエクスポートストレージドメインから仮想マシンをインポートします。
スクリプト化された v2v の一括処理の設定/実行は、以下の手順で行います。

手順4.9 スクリプト化された v2v 一括処理の設定と実行

  1. Red Hat Enterprise Virtualization Manager で REST API が有効化されている状態で、かつ v2v プロセスを実行する Linux ホストからアクセス可能であることを確認します。REST API についての詳しい情報は 『Red Hat Enterprise Virtualization テクニカルガイド』を参照してください。
  2. Linux ホストで、以下の内容を記述した v2v.sh ファイルを作成します。スクリプトを編集して、ご使用の環境に適した値を設定してください。

    例4.5 単一ホストの v2v スクリプト

    #!/bin/sh
    # Declare all VMs to import
    XENDOMAINS=("rhelxen" "rhel5")
    KVMDOMAINS=("rhelkvm")
    VMWAREVMS=("rhel54vmware")
    
    # Iterate through each Xen domain, performing the conversion
    for domain in ${XENDOMAINS[@]}
    do
            virt-v2v -ic xen:///localhost -o rhev -os storage.example.com:/exportdomain --network rhevm $domain
    done
    
    # Iterate through each KVM domain, performing the conversion
    for domain in ${KVMDOMAINS[@]}
    do
            virt-v2v -o rhev -os storage.example.com:/exportdomain --network rhevm $domain
    done
    
    # Iterate through each VMware VM, performing the conversion
    for vm in ${VMWAREVMS[@]}
    do
            virt-v2v -ic esx://esx.example.com/?no_verify=1 -o rhev -os storage.example.com:/exportdomain --network rhevm $vm
    done
    
    
    # Call the import VM procedure remotely on the RHEV Manager
    
    export BASE_URL='https://[rhevm-host]'
    export HTTP_USER='user@internal'
    export HTTP_PASSWORD='password'
    
    curl -o rhevm.cer http://[rhevm-host]/ca.crt
    
    # Get the export storage domains
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/storagedomains?search=nfs_export -o exportdomain
    EXPORT_DOMAIN=`xpath exportdomain '/storage_domains/storage_domain/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # Get the datacenter
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/datacenters?search=NFS -o dc
    DC=`xpath dc '/data_centers/data_center/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # Get the cluster
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/clusters?search=NFS -o cluster
    CLUSTER_ELEMENT=`xpath cluster '/clusters/cluster/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # List contents of export storage domain
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/storagedomains/${EXPORT_DOMAIN}/vms -o vms
    
    # For each vm, export
    VMS=`xpath vms '/vms/vm/actions/link[@rel="import"]/@href' | sed -e 's/ href="//g' | sed -e 's/"/ /g'`
    
    for vms in $VMS
    do 
            curl -v -u "${HTTP_USER}:${HTTP_PASSWORD}" -H "Content-type: application/xml" -d '<action><cluster><name>cluster_name</name></cluster><storage_domain><name>data_domain</name></storage_domain><overwrite>true</overwrite><discard_snapshots>true</discard_snapshots></action>' --cacert rhevm.cer ${BASE_URL}$vms
    done
    
    

    注記

    POST メソッドを使用し、REST API で仮想マシンをエクスポートします。REST API の使用方法に関する詳しい説明は、『Red Hat Enterprise Virtualization テクニカルガイド』を参照してください。
  3. v2v.sh スクリプトを実行します。大量の仮想マシンを変換してインポートするには、数時間かかる場合があります。