第10章 Red Hat Virtualization での仮想マシンのプロビジョニング

Red Hat Virtualization は、エンタープライズレベルのサーバーおよびデスクトップ仮想化プラットフォームです。Red Hat Satellite では、Red Hat Virtualization REST API で 仮想マシンの作成や、電源状態の制御など、仮想化機能を管理できます。

Red Hat Virtualization のプロビジョニングを使用して、ネットワーク接続経由か、既存のイメージをもとに仮想マシンを作成できます。

cloud-init を使用して、プロビジョニングする仮想マシンを設定できます。cloud-init を使用すると、管理対象の DHCP と TFTP など、ネットワークで特別な設定を回避し、仮想マシンのインストールを完了できます。この手法では、Satellite は、 SSH を使用して終了スクリプトを実行し、プロビジョニングした仮想マシンに接続する必要はありません。

前提条件

  • Red Hat Enterprise Linux の同期済みのコンテンツリポジトリー。詳細は、『コンテンツ管理ガイド』の「Red Hat リポジトリーの同期」を参照してください。
  • ホスト登録用のアクティベーションキー。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの作成」を参照してください。
  • Red Hat Virtualization 環境で、論理ネットワークを管理する Capsule Server。Capsule Server との競合を避けるために他の DHCP サービスがこのネットワークで実行されていないことを確認します。詳細は、「3章ネットワークの設定」を参照してください。
  • イメージベースのプロビジョニングを使用する場合は、空の テンプレート以外の既存のテンプレート。仮想マシンのテンプレートを作成する方法についての詳細は、『仮想マシン管理ガイド』の「テンプレート」を参照してください。
  • Satellite Server との通信に使用する Red Hat Virtualization で管理者に相当するユーザー。この通信には、admin@internal ユーザーを使用しないでください。代わりに、以下のパーミッションで新しい Red Hat Virtualization ユーザーを作成します。

    • システム > システムの設定 > ログインパーミッション
    • ネットワーク > vNIC プロファイルの設定 > 作成
    • ネットワーク > vNIC プロファイルの設定 > プロパティーの編集
    • ネットワーク > vNIC プロファイル > 削除
    • ネットワーク > vNIC プロファイル > vNIC プロファイルの仮想マシンへの割り当て
    • ネットワーク > vNIC プロファイル > vNIC プロファイルのテンプレートへの割り当て
    • テンプレート > 操作のプロビジョニング > インポート/エクスポート
    • VM > 操作のプロビジョニング > 作成
    • VM > 操作のプロビジョニング > 削除
    • VM > 操作のプロビジョニング > インポート/エクスポート
    • VM > 操作のプロビジョニング > ストレージの編集
    • ディスク > 操作のプロビジョニング > 作成
    • ディスク > ディスクプロファイル > ディスクプロファイルのアタッチ

      Red Hat Virtualization で新規ユーザーを作成し、パーミッションを追加する方法の詳細は、『Red Hat Virtualization 管理ガイド』の「管理ポータルからのユーザータスクの管理」を参照してください。

手順の概要

  1. 「Satellite Server への Red Hat Virtualization 接続の追加」
  2. オプション: 「Red Hat Virtualization での Cloud-init イメージの準備」cloud-init を使用してイメージベースの仮想マシンを設定するには、この手順を使用します。
  3. オプション: 「Satellite Server への Red Hat Virtualization イメージの追加」。イメージベースのプロビジョニングを使用する場合にはこの手順を使用します。
  4. オプション: 「cloud-init テンプレートの準備」cloud-init を使用してイメージベースの仮想マシンを設定するには、この手順を使用します。
  5. 「Red Hat Virtualization の詳細のコンピュートプロファイルへの追加」
  6. 「Red Hat Virtualization でのホストの作成」

10.1. Satellite Server への Red Hat Virtualization 接続の追加

この手順を使用して、Red Hat Virtualization を Satellite のコンピューティングリソースとして追加します。

手順

  1. Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースの作成 をクリックします。
  2. 名前 フィールドには、新規コンピュートリソースの名前を入力します。
  3. プロバイダー の一覧から RHV を選択します。
  4. 説明 フィールドには、コンピュートリソースの説明を入力します。
  5. URL フィールドに、Red Hat Virtualization Manager の API の接続 URL を https://rhv.example.com/ovirt-engine/api/v3 の形式で入力します。
  6. オプションで APIv4 の使用 のチェックボックスを選択して、新しい Red Hat Virtualization Manager API を評価します。
  7. ユーザー フィールドには、ユーザー名と、Red Hat Virtualization Manager のリソースにアクセスするためのパーミッションを入力します。
  8. パスワード フィールドで、ユーザーのパスワードを入力します。
  9. データセンターのロード をクリックして、データセンター リストに Red Hat Virtualization 環境のデータセンターを入力します。
  10. データセンター リストからデータセンターを選択します。
  11. クォータ ID から Satellite Server で利用可能なリソースを制限するためにクォータを選択します。
  12. X509 証明機関 フィールドには、SSL/TLS アクセスの証明機関を入力します。または、フィールドを空白にすると、サーバーによる最初の API 要求時に、自己署名証明書が生成されます。
  13. ロケーション タブをクリックして、使用するロケーションを選択します。
  14. 組織 タブをクリックして、使用する組織を選択します。
  15. 送信 をクリックしてコンピュートリソースを保存します。

CLI をご利用の場合

  • --providerOvirt を、--uuid で使用するデータセンターの UUID を指定して、hammer compute-resource create コマンドを入力します。

    # hammer compute-resource create \
    --name "My_RHV" --provider "Ovirt" \
    --description "RHV server at rhv.example.com" \
    --url "https://rhv.example.com/ovirt-engine/api" \
    --use-v4 "false" --user "Satellite_User" \
    --password "My_Password" \
    --locations "New York" --organizations "My_Organization" \
    --datacenter "My_Datacenter"

    オプションで新規 Red Hat Virtualization Manager API を評価するには、--use-v4 オプションを false から true に変更します。

10.2. Red Hat Virtualization での Cloud-init イメージの準備

プロビジョニング時に cloud-init を使用するには、Red Hat Virtualization にインストールした cloud-init でイメージを準備してから、イメージを Satellite にインポートしてプロビジョニングに使用してください。

手順

  1. Red Hat Virtualization で、仮想マシンを作成して、Satellite でイメージベースのプロビジョニングに使用します。
  2. 仮想マシンで cloud-init をインストールします。

    yum install cloud-init
  3. /etc/cloud/cloud.cfg ファイルに、以下の情報を追加します。

    datasource_list: ["NoCloud", "ConfigDrive"]
  4. Red Hat Virtualization で、この仮想マシンからイメージを作成します。

このイメージを Satellite に追加するには、User Data チェックボックスを選択します。

10.3. Satellite Server への Red Hat Virtualization イメージの追加

イメージベースのプロビジョニングを使用してホストを作成するには、アクセスの情報およびイメージの場所など、イメージの情報を Satellite Server に追加する必要があります。

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動し、Red Hat Virtualization 接続の名前をクリックします。
  2. イメージの作成 をクリックします。
  3. 名前 フィールドに、イメージの名前を入力します。
  4. オペレーティングシステム リストから、イメージのベースオペレーティングシステムを選択します。
  5. アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
  6. ユーザー名 フィールドには、イメージにアクセスするための SSH ユーザー名を入力します。通常、これは root ユーザーになります。
  7. パスワード フィールドには、イメージにアクセスするための SSH パスワードを入力します。
  8. イメージ リストの Red Hat Virtualization コンピュートリソースからイメージを選択します。
  9. オプション: イメージで cloud-init データなどのユーザーデータ入力をサポートさせるには、ユーザーデータ チェックボックスを選択します。
  10. 送信 をクリックしてイメージの詳細を保存します。

CLI をご利用の場合

  • hammer compute-resource image create コマンドでイメージを作成します。--uuid オプションを使用して、Red Hat Virtualization サーバー上のテンプレート UUID を保存します。

    # hammer compute-resource image create \
    --name "RHV_Image" \
    --compute-resource "My_RHV"
    --operatingsystem "RedHat version" \
    --architecture "x86_64" \
    --username root \
    --uuid "9788910c-4030-4ae0-bad7-603375dd72b1" \

10.4. cloud-init テンプレートの準備

手順

  1. Satellite Web UI で、ホスト > プロビジョニングテンプレート に移動し、テンプレートの作成 をクリックします。
  2. 名前 フィールドには、テンプレートの名前を入力します。
  3. Editor フィールドで、以下のテンプレートの情報を入力します。

    <%#
    kind: user_data
    name: Cloud-init
    -%>
    #cloud-config
    hostname: <%= @host.shortname %>
    
    <%# Allow user to specify additional SSH key as host paramter -%>
    <% if @host.params['sshkey'].present? || @host.params['remote_execution_ssh_keys'].present? -%>
    ssh_authorized_keys:
    <% if @host.params['sshkey'].present? -%>
      - <%= @host.params['sshkey'] %>
    <% end -%>
    <% if @host.params['remote_execution_ssh_keys'].present? -%>
    <% @host.params['remote_execution_ssh_keys'].each do |key| -%>
      - <%= key %>
    <% end -%>
    <% end -%>
    <% end -%>
    runcmd:
      - |
        #!/bin/bash
    <%= indent 4 do
        snippet 'subscription_manager_registration'
    end %>
    <% if @host.info['parameters']['realm'] && @host.realm && @host.realm.realm_type == 'Red Hat Identity Management' -%>
      <%= indent 4 do
        snippet 'idm_register'
      end %>
    <% end -%>
    <% unless @host.operatingsystem.atomic? -%>
        # update all the base packages from the updates repository
        yum -t -y -e 0 update
    <% end -%>
    <%
        # safemode renderer does not support unary negation
        non_atomic = @host.operatingsystem.atomic? ? false : true
        pm_set = @host.puppetmaster.empty? ? false : true
        puppet_enabled = non_atomic && (pm_set || @host.params['force-puppet'])
    %>
    <% if puppet_enabled %>
        yum install -y puppet
        cat > /etc/puppet/puppet.conf << EOF
      <%= indent 4 do
        snippet 'puppet.conf'
      end %>
        EOF
        # Setup puppet to run on system reboot
        /sbin/chkconfig --level 345 puppet on
    
        /usr/bin/puppet agent --config /etc/puppet/puppet.conf --onetime --tags no_such_tag <%= @host.puppetmaster.blank? ? '' : "--server #{@host.puppetmaster}" %> --no-daemonize
        /sbin/service puppet start
    <% end -%>
    phone_home:
     url: <%= foreman_url('built') %>
     post: []
     tries: 10pp
  4. タイプ タブをクリックして、タイプ リストからユーザーデータのテンプレート を選択します。
  5. 関連付け タブをクリックして、適用可能なオペレーティングシステム リストから、このテンプレートに関連付けるオペレーティングシステムを選択します。
  6. ロケーション タブをクリックして、ロケーション 一覧から、テンプレートを関連付けるロケーションを選択します。
  7. 組織 タブをクリックして、組織 一覧から、テンプレートに関連付ける組織を選択します。
  8. 送信 をクリックします。
  9. ホスト > オペレーティングシステム に移動し、テンプレートに関連付けるオペレーティングシステムを選択します。
  10. テンプレート タブをクリックし、ユーザーデータテンプレート リストから、新規テンプレート名を選択します。
  11. 送信 をクリックします。

10.5. Red Hat Virtualization の詳細のコンピュートプロファイルへの追加

この手順を使用して、Red Hat Virtualization ハードウェア設定をコンピューティングプロファイルに追加します。このコンピューティングプロファイルを使用して KVM でホストを作成すると、これらの設定が自動的に入力されます。

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートプロファイル に移動します。
  2. コンピュートプロファイルウィンドウで、既存のコンピュートプロファイル名をクリックするか、Create Compute Profile をクリックするか、Name を入力して Submit をクリックします。
  3. Red Hat Virtualization コンピューティングリソースの名前をクリックします。
  4. クラスター リストから Red Hat Virtualization 環境のターゲットホストクラスターを選択します。
  5. テンプレート リストから コア数 および メモリー 設定に使用する RHV テンプレートを選択します。
  6. コア数 フィールドには、新規ホストに割り当てる CPU コア数を入力します。
  7. メモリー フィールドには、新規ホストに割り当てるメモリーの容量を入力します。
  8. イメージ リストから、イメージベースのプロビジョニングに使用するイメージを選択します。
  9. ネットワークインターフェース エリアには、ホストのネットワークインターフェースのネットワークパラメーターを入力します。ネットワークインターフェースは、複数作成することができますが、少なくとも 1 つのインターフェースが Capsule で管理されるネットワークを参照している必要があります。各ネットワークインターフェースには、以下の情報を入力します。

    1. 名前 フィールドに、ネットワークインターフェースの名前を入力します。
    2. ネットワーク リストから、使用する論理ネットワークを選択します。
  10. ストレージ エリアには、ホストのストレージパラメーターを入力します。ホストのボリュームは複数作成できます。ボリュームごとに以下の情報を入力します。

    1. Size (GB) には、新しいボリュームのサイズを GB 単位で入力します。
    2. ストレージドメイン リストからボリュームのストレージドメインを選択します。
    3. ディスクの事前割り当て から、シンプロビジョニングまたはフルディスクの事前割り当てのいずれかを選択します。
    4. Bootable リストから、ブータブルか、ブータブル以外のボリュームのいずれかを選択します。
  11. 送信 をクリックしてコンピュートプロファイルを保存します。

CLI をご利用の場合

  1. 以下のコマンドを実行してコンピュートプロファイルを作成します。

    # hammer compute-profile create --name "Red Hat Virtualization CP"
  2. コンピュートプロファイルの値を設定するには、以下のコマンドを入力します。

    # hammer compute-profile values create --compute-profile "Red Hat Virtualization CP" \
    --compute-resource "My_RHV" \
    --interface "compute_interface=Interface_Type,compute_name=eth0,compute_network=satnetwork" \
    --volume "size_gb=20G,storage_domain=Data,bootable=true" \
    --compute-attributes "cluster=Default,cores=1,memory=1073741824,start=true""

10.6. Red Hat Virtualization でのホストの作成

Satellite では Red Hat Virtualization のプロビジョニングを使用して、ネットワーク接続経由か、既存のイメージをもとにホストを作成できます。

  • ネットワーク接続経由でホストを作成する場合には、ホストが PXE プロビジョニングサービスにアクセスできるように、新規ホストは Red Hat Virtualization 仮想マシン上にある Satellite Server の統合 Capsule か、外部の Capsule Server にアクセスできる必要があります。この新しいホストエントリーにより、Red Hat Virtualization サーバーが仮想マシンを作成して起動するようにトリガーします。仮想マシンが仮想ネットワークで定義済みの Capsule Server を検出した場合には、仮想マシンは PXE 機能を使用してブートして、選択したオペレーティングシステムのインストールを開始します。
  • 既存のイメージでホストを作成する場合には、新規ホストのエントリーで Red Hat Virtualization サーバーが、新規ボリュームのベースとして既存のイメージを使用して、仮想マシンを作成するようにトリガーします。

DHCP の競合

ネットワークベースのプロビジョニングでは、Red Hat Virtualization サーバーの仮想ネットワークをプロビジョニングに使用する場合には、DHCP 割り当てを行わないネットワークを選択します。これにより、新規ホストの起動時に、Satellite Server と DHCP が競合してしまうためです。

手順

  1. Satellite Web UI で、ホスト > ホストの作成 に移動します。
  2. 名前 フィールドには、ホストの名前を入力します。
  3. 組織 および ロケーション タブをクリックして、プロビジョニングのコンテキストが現在のコンテキストに自動的に設定されていることを確認します。
  4. ホストグループ リストから、フォームの生成に使用するホストグループを選択します。
  5. デプロイ先 リストから、Red Hat Virtualization 接続を選択します。
  6. コンピュートプロファイル リストから、仮想マシンの設定を自動的に投入するために使用するプロファイルを選択します。
  7. インターフェース タブをクリックして、ホストのインターフェースで 編集 をクリックします。
  8. 特に以下の項目など、フィールドに自動的に入力されていることを確認します。

    • ホスト タブの 名前DNS 名 になります。
    • Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
    • MAC アドレス は空白です。Red Hat Virtualization サーバーが MAC アドレスをホストに割り当てます。
    • ホストの最初のインターフェースで Managed (管理)Primary、および Provision オプションが自動的に選択されていること。選択されていない場合は、選択してください。
    • Red Hat Virtualization 固有のフィールドにコンピュートプロファイルの設定が入力されていることを確認します。必要に応じてこれらの設定を変更します。
  9. オペレーティングシステム タブをクリックして、全フィールドに値が自動的に含まれていることを確認します。
  10. Provisioning Method のページで、使用するホストを選択します。

    • ネットワークベースのプロビジョニングの場合、ネットワークベース をクリックします。
    • イメージベースのプロビジョニングの場合、イメージベース をクリックします。
  11. プロビジョニングテンプレート解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
  12. 仮想マシン タブをクリックして、これらの設定には、ホストグループおよびコンピュートプロファイルからの情報が入力されていることを確認し、必要に応じて変更してください。
  13. パラメーター タブをクリックして、存在するパラメーターでアクティベーションキーが提供されていることを確認します。提供されていない場合には、アクティベーションキーを追加します。
  14. 送信 をクリックしてホストエントリーを保存します。

CLI をご利用の場合

  • ネットワークベースのプロビジョニングを使用するには、--provision-method build を指定して hammer host create コマンドでホストを作成します。以下の例の値は、環境に合った値に置き換えます。

    # hammer host create \
    --name "RHV-vm1" \
    --organization "My_Organization" \
    --location "New York" \
    --hostgroup "Base" \
    --compute-resource "My_RHV" \
    --provision-method build \
    --build true \
    --enabled true \
    --managed true \
    --interface "managed=true,primary=true,provision=true,compute_name=eth0,compute_network=satnetwork" \
    --compute-attributes="cluster=Default,cores=1,memory=1073741824,start=true" \
    --volume="size_gb=20G,storage_domain=Data,bootable=true"
  • イメージベースのプロビジョニングを使用するには、--provision-method image を指定して hammer host create コマンドでホストを作成します。以下の例の値は、環境似合った値に置き換えます。

    # hammer host create \
    --name "RHV-vm2" \
    --organization "My_Organization" \
    --location "New York" \
    --hostgroup "Base" \
    --compute-resource "My_RHV" \
    --provision-method image \
    --image "RHV_Image" \
    --enabled true \
    --managed true \
    --interface "managed=true,primary=true,provision=true,compute_name=eth0,compute_network=satnetwork" \
    --compute-attributes="cluster=Default,cores=1,memory=1073741824,start=true" \
    --volume="size_gb=20G,storage_domain=Data,bootable=true"

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、hammer host create --help コマンドを入力します。