第9章 KVM (libvirt) での仮想マシンのプロビジョニング

カーネルベースの仮想マシン (KVM) はオープンソースの仮想化デーモンおよび Red Hat Enterprise Linux で実行される libvirt という API を使用します。Red Hat Satellite は KVM サーバーで libvirt API に接続でき、ハイパーバイザーにホストをプロビジョニングし、特定の仮想化機能を制御することができます。

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

前提条件

  • Red Hat Enterprise Linux の同期済みのコンテンツリポジトリー。詳細は、『コンテンツ管理ガイド』の「Red Hat リポジトリーの同期」を参照してください。
  • ホスト登録用のアクティベーションキー。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの作成」を参照してください。
  • KVM サーバーでネットワークを管理する Capsule Server。Capsule Server との競合を避けるためにその他の DHCP サービスがこのネットワーク上で実行されていないことを確認します。Capsule Server のネットワークサービス設定の詳細は、3章ネットワークの設定 を参照します。
  • KVM 仮想化ツールを実行する Red Hat Enterprise Linux サーバー (libvirt daemon)。詳細は、『Red Hat Enterprise Linux 7 仮想化スタートガイド』を参照してください。
  • 既存の仮想マシンイメージ (イメージベースのプロビジョニングを使用する場合) 。このイメージが KVM ホストのストレージプールにあることを確認します。デフォルトの ストレージプールは通常 /var/lib/libvirt/images にあります。Satellite 経由で管理できるのは、ディレクトリーのプールストレージタイプのみです。
  • オプション: この手順の例では、KVM の root ユーザーを使用します。KVM サーバーで root 以外のユーザーを使用する場合には、KVM サーバーの libvirt グループにユーザーを追加します。

    useradd -a -G libvirt non_root_user
  • 以下のロールが割り当てられた Satellite ユーザーアカウント:

  • 以下のパーミッションが指定された Satellite のカスタムロール

    • view_compute_resources
    • destroy_compute_resources_vms
    • power_compute_resources_vms
    • create_compute_resources_vms
    • view_compute_resources_vms
    • view_locations
    • view_subnets

      ロール作成に関する詳細は、『Red Hat Satellite 管理ガイド』の「ロールの作成」を参照してください。ロールにパーミッションを追加する方法については、『Red Hat Satellite 管理ガイド』の「ロールへのパーミッションの追加」を参照してください。

9.1. Satellite Server の KVM 接続設定

KVM 接続を追加する前に、foreman ユーザーの SSH 鍵ペアを作成して、Satellite Server とKVM 間の安全な接続を確保します。

手順

  1. Satellite Server で Foreman ユーザーに切り替えます。

    # su foreman -s /bin/bash
  2. キーペアを生成します。

    $ ssh-keygen
  3. 公開キーを KVM サーバーにコピーします。

    $ ssh-copy-id root@kvm.example.com
  4. foreman ユーザーのバッシュシェルを終了します。

    $ exit
  5. libvirt-client パッケージをインストールします。

    # satellite-maintain packages install libvirt-client
  6. 以下のコマンドを使用して、KVM サーバーへの接続をテストします。

    # su foreman -s /bin/bash -c 'virsh -c qemu+ssh://root@kvm.example.com/system list'

9.2. Satellite Server への KVM 接続の追加

KVM を Satellite のコンピューティングリソースとして追加するには、次の手順を使用します。

手順

  1. Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースの作成 をクリックします。
  2. 名前 フィールドには、新規コンピュートリソースの名前を入力します。
  3. プロバイダー の一覧から Libvirt を選択します。
  4. 説明 フィールドには、コンピュートリソースの説明を入力します。
  5. URL フィールドには、KVM サーバーへの libvirt への接続 URL を入力します。以下に例を示します。

     qemu+ssh://root@kvm.example.com/system
  6. ディスプレイタイプ リストから、VNC または Spice を選択します。
  7. オプション: 無作為に生成したパスワードで、新規ホストのコンソールアクセスのセキュリティーを確保するには、ディスプレイ接続時にランダムに生成されたパスワードを設定します というチェックボックスを選択します。KVM サーバーで実行した以下のコマンドの出力から、ゲストの仮想マシンコンソールにアクセスするための、VNC コンソールのパスワードを取得できます。

    # virsh edit your_VM_name
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='your_randomly_generated_password'>

    パスワードは、virt-manager などで、仮想マシンのコンソールを開くたびに無作為に生成されます。

  8. テスト接続 をクリックして Satellite Server が KVM サーバーに問題なく接続できることを確認します。
  9. ロケーション および 組織 タブは現在のコンテキストに自動的に設定されていることを確認します。他のコンテキストをこれらのタブに追加します。
  10. 送信 をクリックして KVM 接続を保存します。

CLI をご利用の場合

  • コンピュートリソースを作成するには、hammer compute-resource create コマンドを使用します。

    # hammer compute-resource create --name "My_KVM_Server" \
    --provider "Libvirt" --description "KVM server at kvm.example.com" \
    --url "qemu+ssh://root@kvm.example.com/system" --locations "New York" \
    --organizations "My_Organization"

9.3. Satellite Server での KVM イメージの追加

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

Satellite 6 で管理できるのは、ディレクトリプールストレージタイプのみである点に注意してください。

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動し、KVM 接続の名前をクリックします。
  2. イメージの作成 をクリックします。
  3. 名前 フィールドに、イメージの名前を入力します。
  4. オペレーティングシステム リストから、イメージのベースオペレーティングシステムを選択します。
  5. アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
  6. ユーザー名 フィールドには、イメージにアクセスするための SSH ユーザー名を入力します。通常、これは root ユーザーになります。
  7. パスワード フィールドには、イメージにアクセスするための SSH パスワードを入力します。
  8. イメージパス フィールドには、KVM サーバーのイメージを参照する完全パスを入力します。以下に例を示します。

     /var/lib/libvirt/images/TestImage.qcow2
  9. オプション: イメージで cloud-init データなどのユーザーデータ入力をサポートさせるには、ユーザーデータ チェックボックスを選択します。
  10. 送信 をクリックしてイメージの詳細を保存します。

CLI をご利用の場合

  • hammer compute-resource image create コマンドでイメージを作成します。--uuid フィールドを使用して KVM サーバー上のイメージの場所の完全パスを保存します。

    # hammer compute-resource image create \
    --name "KVM Image" \
    --compute-resource "My_KVM_Server"
    --operatingsystem "RedHat version" \
    --architecture "x86_64" \
    --username root \
    --user-data false \
    --uuid "/var/lib/libvirt/images/KVMimage.qcow2" \

9.4. KVM の詳細のコンピュートプロファイルへの追加

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

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートプロファイル に移動します。
  2. コンピュートプロファイルウィンドウで、既存のコンピュートプロファイル名をクリックするか、Create Compute Profile をクリックするか、Name を入力して Submit をクリックします。
  3. KVM コンピューティングリソースの名前をクリックします。
  4. CPU フィールドには、新規ホストに割り当てる CPU の数を入力します。
  5. メモリー フィールドには、新規ホストに割り当てるメモリーの容量を入力します。
  6. イメージ リストから、イメージベースのプロビジョニングを実行する場合には、使用するイメージを選択します。
  7. ネットワークインターフェース リストから、ホストのネットワークインターフェースのネットワークパラメーターを選択します。ネットワークインターフェースは複数作成できますが、最低でも 1 つのインターフェース は Capsule が管理するネットワークを参照する必要があります。
  8. ストレージ エリアには、ホストのストレージパラメーターを入力します。ホストのボリュームは複数作成できます。
  9. 送信 をクリックしてコンピュートプロファイルの設定を保存します。

CLI をご利用の場合

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

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

    # hammer compute-profile values create --compute-profile "Libvirt CP" \
    --compute-resource "My_KVM_Server" \
    --interface "compute_type=network,compute_model=virtio,compute_network=examplenetwork" \
    --volume "pool_name=default,capacity=20G,format_type=qcow2" \
    --compute-attributes "cpus=1,memory=1073741824"

9.5. KVM でのホストの作成

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

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

DHCP の競合

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

手順

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

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

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

CLI をご利用の場合

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

    # hammer host create \
    --name "kvm-host1" \
    --organization "My_Organization" \
    --location "New York" \
    --hostgroup "Base" \
    --compute-resource "My_KVM_Server" \
    --provision-method build \
    --build true \
    --enabled true \
    --managed true \
    --interface "managed=true,primary=true,provision=true,compute_type=network,compute_network=examplenetwork" \
    --compute-attributes="cpus=1,memory=1073741824" \
    --volume="pool_name=default,capacity=20G,format_type=qcow2" \
    --root-password "password"
  • イメージベースのプロビジョニングを使用するには、--provision-method image を指定して hammer host create コマンドでホストを作成します。以下の例の値は、環境似合った値に置き換えます。

    # hammer host create \
    --name "kvm-host2" \
    --organization "My_Organization" \
    --location "New York" \
    --hostgroup "Base" \
    --compute-resource "My_KVM_Server" \
    --provision-method image \
    --image "KVM Image" \
    --enabled true \
    --managed true \
    --interface "managed=true,primary=true,provision=true,compute_type=network,compute_network=examplenetwork" \
    --compute-attributes="cpus=1,memory=1073741824" \
    --volume="pool_name=default,capacity=20G,format_type=qcow2"

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