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


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

7.1. KVM プロビジョニングの要件

KVM プロビジョニングの要件には以下が含まれます。

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

Libvirt コンピュートリソースをプロビジョニングするためのユーザーロールとパーミッション

Satellite で Libvirt ホストをプロビジョニングするには、以下のロールをユーザーアカウントに指定する必要があります。

  • ホストの編集
  • ホストの表示

詳しい情報は、『Red Hat 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 管理ガイド』の「ロールへのパーミッションの追加」を参照してください。

7.2. Satellite Server の KVM 接続設定

KVM 接続を追加する前に、Satellite Server には安全な接続を確認するための設定が必要になります。つまり、接続を実行するユーザーである Foreman ユーザー用に SSH キーペアを作成する必要があります。

root 以外のユーザー

以下の例は、KVM の root ユーザーを使用しますが、KVM サーバーで root 以外のユーザーを使用する場合には、KVM サーバーの libvirt グループにユーザーを追加します。

useradd -G libvirt non_root_user

手順

KVM 接続用に Satellite Server を設定するには、次の手順を実行します。

  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'

    Satellite Server で KVM 接続を追加する場合、qemu+ssh プロトコルおよびサーバーのアドレスを使用します。以下に例を示します。

    qemu+ssh://root@kvm.example.com/system

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

この手順を使用して、Satellite Server のコンピュートリソースに KVM 接続を追加します。

手順

Satellite に KVM 接続を追加するには、以下の手順を行います。

  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"

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

アクセス権の情報やイメージの場所など、イメージに関する情報は、Satellite Server に追加する必要があります。

サポート対象のストレージタイプ

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

手順

Satellite Server に KVM イメージを追加するには、以下の手順を行います。

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

     /var/lib/libvirt/images/TestImage.qcow2
  10. 送信 をクリックしてイメージの詳細を保存します。

CLI をご利用の場合

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

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

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

コンピュートプロファイルにこれらのハードウェア設定を追加して、KVM ベースの仮想マシンに特定のハードウェア設定を事前に定義することができます。

手順

KVM の詳細をコンピュートプロファイルに追加するには、以下の手順を行います。

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

CLI をご利用の場合

コンピュートプロファイルの CLI コマンドは、Red Hat Satellite 6.6 ではまだ実装されていません。代わりに、ホストの作成プロセスで同じ設定を直接組み込むことができます。

7.6. KVM サーバーでのホストの作成

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

既存のイメージでホストを作成する場合は、新規ホストのエントリーは、KVM サーバーが新規ボリュームのベースとして既存イメージを使用し、仮想マシンを作成するようトリガーします。

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

DHCP の競合

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

手順

KVM ホストを作成するには、以下の手順を行います。

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

    • ホスト タブの 名前DNS 名 になります。
    • Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
  9. MAC アドレス フィールドは空白であることを確認します。KVM サーバーは、MAC アドレスをホストに割り当てます。
  10. ホストの最初のインターフェースで Managed (管理)Primary、および Provision オプションが自動的に選択されていることを確認します。選択されていない場合は、それらを選択してください。
  11. インターフェースウィンドウで、KVM 固有のフィールドにコンピュートプロファイルの設定が入力されていることを確認します。必要に応じてこれらの設定を変更します。
  12. オペレーティングシステム タブをクリックして、全フィールドに値が自動的に含まれていることを確認します。
  13. ネットワークベースのプロビジョニングでは、プロビジョニング方法ネットワークベース に設定されており、イメージベースのプロビジョニングでは プロビジョニング方法イメージベース に設定されていることを確認します。
  14. プロビジョニングテンプレート解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
  15. 仮想マシン タブをクリックして、これらの設定には、ホストグループおよびコンピュートプロファイルからの情報が入力されていることを確認し、必要に応じて変更してください。
  16. パラメーター タブをクリックして、存在するパラメーターでアクティベーションキーが提供されていることを確認します。提供されていない場合には、アクティベーションキーを追加します。
  17. 送信 をクリックしてホストエントリーを保存します。

CLI をご利用の場合

hammer host create コマンドでホストを作成し、--provision-method build を組み込んでネットワークベースのプロビジョニングを使用します。

# hammer host create --name "kvm-test1" --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"

hammer host create コマンドでホストを作成し、--provision-method image を組み込んでイメージベースのプロビジョニングを使用します。

# hammer host create --name "kvm-test2" --organization "My_Organization" \
--location "New York" --hostgroup "Base" \
--compute-resource "My_KVM_Server" --provision-method image \
--image "Test 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"

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、「付録B Hammer CLI の追加のホストパラメーター」を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.