第7章 KVM サーバー (libvirt) での仮想マシンのプロビジョニング
カーネルベースの仮想マシン (KVM) はオープンソースの仮想化デーモンおよび Red Hat Enterprise Linux で実行される libvirt
という API を使用します。Red Hat Satellite 6 は KVM サーバーで libvirt
API に接続でき、ハイパーバイザーにホストをプロビジョニングし、特定の仮想化機能を制御することができます。本章では、ACME の KVM サーバーに接続を追加し、仮想マシンのプロビジョニングを実行します。
7.1. KVM プロビジョニングの要件定義
KVM プロビジョニングの要件には以下が含まれます。
- Red Hat Enterprise Linux 7 の同期済みのコンテンツリポジトリー。詳細は、Red Hat Satellite 6 コンテンツ管理ガイド を参照してください。
- KVM サーバーでネットワークを管理する Capsule Server。Capsule Server との競合を避けるためにその他の DHCP サービスがこのネットワーク上で実行されていないことを確認します。Capsule Server のネットワークサービス設定の詳細は、4章ネットワークの設定 を参照します。
- ホスト登録のためのアクティべーションキーのサンプル。詳細は、「アクティベーションキーの作成」 を参照してください。
- KVM 仮想化ツールを実行する Red Hat Enterprise Linux サーバー。詳細は、Red Hat Enterprise Linux 7 仮想化スタートガイド を参照してください。
-
(イメージベースのプロビジョニングを使用する場合) 既存の仮想マシンイメージ。このイメージが KVM ホストのストレージプールにあることを確認します。
デフォルトの
ストレージプールは通常/var/lib/libvirt/images
にあります。
7.2. Satellite Server での KVM 接続の設定
KVM 接続を追加する前に、Satellite Server には安全な接続を確認するための設定が必要になります。つまり、接続を実行するユーザー foreman
ユーザー用に SSH キーペアを作成する必要があります。
Satellite Server で foreman
ユーザーに切り替えます。
# su foreman -s /bin/bash
キーペアを生成します。
$ ssh-keygen
公開キーを KVM サーバーにコピーします。以下は例になります。
$ ssh-copy-id root@kvm.example.com
以下のコマンドを使用して、KVM サーバーへの接続をテストします。
$ virsh -c qemu+ssh://root@kvm.example.com/system list
Satellite Server で KVM 接続を追加する場合、qemu+ssh
プロトコルおよびサーバーのアドレスを使用します。たとえば、qemu+ssh://root@kvm.example.com/system
のようになります。
7.3. KVM 接続の Satellite Server への追加
このプロセスでは、Satellite Server のコンピュートリソースで KVM 接続を追加します。
Web UI を使用する場合
インフラストラクチャー > コンピュートリソース に移動し、新規のコンピュートリソース をクリックします。UI には、コンピュートリソースの一連のフィールドがあります。
-
名前: リソースのテキスト形式の名前。例:
ACME's KVM Server
-
プロバイダー: コンピュートリソースプロバイダーを選択するためのフィールド。
Libvirt
を選択すると、新規のフィールドのセットが表示されます。 -
説明: リソースのテキスト形式の説明。例:
KVM server at kvm.example.com
-
URL: KVM サーバーへの
libvirt
接続 URL。例:qemu+ssh://root@kvm.example.com/system
-
タイプの表示: 使用するリモートアクセスプロトコルを選択します (
VNC
またはSpice
のいずれか)。 - コンソールのパスワード: ランダムに生成されたパスワードで新規ホストのコンソールアクセスのセキュリティーを保護します。
テスト接続 をクリックして Satellite Server が KVM サーバーに問題なく接続できることを確認します。
ロケーション および 組織 タブは現在のコンテキストに自動的に設定されます。他のコンテキストをこれらのタブに追加します。
送信 をクリックして KVM 接続を保存します。
CLI を使用する場合
hammer compute-resource create
コマンドで接続を作成します。
# hammer compute-resource create --name "ACME's KVM Server" --provider "Libvirt" --description "KVM server at kvm.example.com" --url "qemu+ssh://root@kvm.example.com/system" --locations "New York" --organizations "ACME"
7.4. Satellite Server での KVM イメージの追加
イメージベースのプロビジョニングを使用して新規ホストを作成する場合、イメージの詳細を Satellite Server に追加する必要があります。これには、アクセスの詳細およびイメージの場所が含まれます。
Web UI を使用する場合
インフラストラクチャー > コンピュートリソース に移動し、KVM 接続の名前をクリックします。UI には、イメージ タブを含む、接続についての情報が表示されます。このタブには、新規プロバイダーのイメージは含まれませんが、新規イメージを追加することができます。新規イメージ をクリックすると、UI に KVM イメージの一連のフィールドが表示されます。
-
名前: イメージのテキスト形式の名前。例:
Test KVM Image
-
オペレーティングシステム: イメージのベースオペレーティングシステムを選択するためのフィールド。例:
RedHat 7.2
-
アーキテクチャー: オペレーティングシステムのアーキテクチャーを選択するためのフィールド。例:
x86_64
-
ユーザー名: イメージへのアクセスのための SSH ユーザー名。通常、これは
root
ユーザーになります。 - パスワード: イメージにアクセスするための SSH パスワード。
-
ユーザーデータ: イメージが
cloud-init
データなどのユーザーデータ入力をサポートするかどうかを定義します。 -
イメージパス: KVM サーバーのイメージを指す完全パス。例:
/var/lib/KVM/images/TestImage.qcow2
送信 をクリックしてイメージの詳細を保存します。
CLI を使用する場合
hammer compute-resource image create
コマンドでイメージを作成します。--uuid
フィールドを使用して KVM サーバー上のイメージの場所の完全パスを保存します。
# hammer compute-resource image create --name "Test KVM Image" --operatingsystem "RedHat 7.2" --architecture "x86_64" --username root --user-data false --uuid "/var/lib/libvirt/images/TestImage.qcow2" --compute-resource "ACME's KVM Server"
7.5. KVM の詳細のコンピュートプロファイルへの追加
KVM ベースの仮想マシンの特定のハードウェア設定を事前に定義することができます。これは、これらのハードウェア設定をコンピュートプロファイルに追加して実行できます。この例では、「コンピュートプロファイルの作成」 で作成した 4-Example
プロファイルにいくつかの基本的なハードウェア設定を組み込みます。
Web UI を使用する場合
インフラストラクチャー > コンピュートプロファイル に移動し、プロファイルの名前をクリックします。たとえば、「コンピュートプロファイルの作成」 で事前に作成した 4-Example
プロファイルを使用します。UI には、コンピュートリソースの一覧が表示されます。KVM 接続をクリックします。
UI には、プロファイルの KVM 固有の詳細を入力できる一連のフィールドがあります。これには以下が含まれます。
- CPU: 新規ホストに割り当てる CPU の数。
- メモリー: 新規ホストに割り当てるメモリーの容量。
-
イメージ: イメージベースのプロビジョニングを実行する際に使用するイメージ。この例では、
Test KVM Image
を使用します。 ネットワークインターフェース: ホストのネットワークインターフェースの KVM ネットワークパラメーターを定義します。複数のネットワークインターフェースを作成することができます。ただし、少なくとも 1 つ以上のインターフェースが Capsule で管理されるネットワークをポイントしている必要があります。ネットワークインターフェースのオプションには、以下が含まれます。
-
ネットワークタイプ: ホストおよび NIC のネットワークのタイプを定義します。
物理 (ブリッジ)
または仮想 (Nat)
のいずれかにすることができます。 - ネットワーク: ネットワークタイプ の選択内容により、使用するホストの物理インターフェースか、または KVM サーバー上の仮想ネットワークのいずれかになります。
-
NIC タイプ:
virtio
などの仮想 NIC タイプを定義します。
-
ネットワークタイプ: ホストおよび NIC のネットワークのタイプを定義します。
ストレージ: ホストのボリュームを定義します。ホストに複数のボリュームを作成することができます。ストレージのオプションには以下が含まれます。
- ストレージプール: ボリュームを含む KVM サーバーのプールを定義します。
- サイズ: ボリュームのサイズ (GB) を定義します。
- 割り当て: ボリュームに事前に割り当てられた物理スペースのサイズを定義します。
-
タイプ: ボリュームのタイプを定義します。
RAW
またはQCOW2
のいずれかになります。
送信 をクリックしてコンピュートプロファイルを保存します。
CLI を使用する場合
コンピュートプロファイルの CLI コマンドは Red Hat Satellite 6.2 ではまだ実装されていません。代替方法として、ホストの作成プロセスで同じ設定を直接組み込むことができます。
7.6. KVM サーバーでのネットワークベースのホストの作成
KVM プロビジョニングプロセスは、ネットワーク接続を介して新規ホストを作成するオプションを提供します。この場合、新規ホストが Satellite Server の統合 Capsule または KVM 仮想ネットワークの外部 Capsule Server に接続できる必要があります。ホストが PXE プロビジョニングサービスにアクセスできるようにするためです。
プロビジョニングのために仮想ネットワークを KVM サーバーで使用している場合、DHCP 割り当てを提供しないネットワークを選択します。そうしないと、新規ホストの起動時に Satellite Server との DHCP の競合が生じるためです。
Web UI を使用する場合
ホスト > 新規ホスト に移動します。UI には、ホストの詳細を入力できる一覧のフィールドがあります。
ホスト タブ:
-
ホストの 名前 を入力します。これは、プロビジョニングされたシステムのホスト名になります。この例では、
kvm-test1
になります。 -
プロビジョニングコンテキスト (組織 および ロケーション) は現在のコンテキストに自動的に設定されます。例:
ACME
およびNew York
-
ホストグループ フィールドから
Base
を選択します。これにより、新規ホストのほとんどのフィールドが自動的に設定されます。 -
デプロイ先 で、KVM 接続を選択します。この例では、
ACME's KVM Server
になります。仮想マシンの新規タブが表示されます。 -
コンピュートプロファイル で、仮想マシンベースの設定を自動的に行うために使用するプロファイルを選択します。例:
4-Example
-
ホストの 名前 を入力します。これは、プロビジョニングされたシステムのホスト名になります。この例では、
インターフェース タブ:
- ホストのインターフェースの 編集 をクリックします。
ほとんどのフィールドには、値が自動的に含まれるはずです。とくに以下の点に注意してください。
- ホスト タブの 名前 は DNS 名 になります。
- Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
- MAC アドレス を空白にします。KVM サーバーは MAC アドレスをホストに割り当てます。
- Satellite Server は、ホストの最初のインターフェースで Managed (管理)、Primary、および Provision オプションを自動的に選択するはずです。選択されていない場合は、それらを選択してください。
- インターフェース画面には、コンピュートプロファイルの設定が入力された KVM 固有のフィールドが表示されます。必要に応じてこれらの設定を変更します。
オペレーティングシステム タブ:
- すべてのフィールドには値が自動的に含まれるはずです。オペレーティングシステムの各要素を確認してください。
-
プロビジョニング方法 が
ネットワークベース
に設定されていることを確認します。 - プロビジョニングテンプレート で 解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
仮想マシン タブ:
- これらの設定には、選択されたホストグループおよびコンピュートプロファイルの詳細が入力されているはずです。必要に応じてこれらの設定を変更します。
パラメーター タブ:
-
kt_activation_keys
パラメーターが存在し、サンプル
のアクティべーションキーを使用していることを確認します。
-
送信 をクリックします。
CLI を使用する場合
hammer host create
コマンドでホストを作成し、--provision-method build
を組み込んでネットワークベースのプロビジョニングを使用します。以下は例になります。
# hammer host create --name "kvm-test1" --organization "ACME" --location "New York" --hostgroup "Base" --compute-resource "ACME's KVM Server" --provision-method build --build true --enabled true --managed true --interface "managed=true,primary=true,provision=true,compute_type=network,compute_network=acmenetwork" --compute-attributes="cpus=1,memory=1073741824" --volume="pool_name=default,capacity=20G,format_type=qcow2"
このコンピュートリソースの追加のホスト作成パラメーターについての詳細は、付録B Hammer CLI の追加のホストパラメーター を参照してください。
新規ホストのエントリーは KVM サーバーが仮想マシンを作成し、これを開始するようにトリガーします。仮想マシンが仮想ネットワーク経由で定義済みの Capsule Server を検出する場合、仮想マシンは PXE で起動し、選択したオペレーティングシステムのインストールを開始します。
7.7. KVM サーバーでのイメージベースのホストの作成
KVM プロビジョニングプロセスは、KVM サーバーで既存イメージから新規ホストを作成するオプションも提供します。
Web UI を使用する場合
ホスト > 新規ホスト に移動します。UI には、ホストの詳細を入力できる一覧のフィールドがあります。
ホスト タブ:
-
ホストの 名前 を入力します。これはプロビジョニングされたシステムのホスト名になります。この例では、
kvm-test2
と入力します。 -
プロビジョニングコンテキスト (組織 および ロケーション) は
ACME
およびNew York
に自動的に設定されます。 -
ホストグループ フィールドから
Base
を選択します。これにより、新規ホストのほとんどのフィールドが自動的に設定されます。 -
デプロイ先 で、KVM 接続を選択します。この例では、
ACME's KVM Server
になります。仮想マシンの新規タブが表示されます。 -
コンピュートプロファイル で、仮想マシンベースの設定を自動的に行うために使用するプロファイルを選択します。例:
4-Example
-
ホストの 名前 を入力します。これはプロビジョニングされたシステムのホスト名になります。この例では、
インターフェース タブ:
- ホストのインターフェースの 編集 をクリックします。
ほとんどのフィールドには、値が自動的に含まれるはずです。とくに以下の点に注意してください。
- ホスト タブの 名前 は DNS 名 になります。
- Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
- MAC アドレス を空白にします。KVM サーバーは MAC アドレスをホストに割り当てます。
- Satellite Server は、ホストについて Managed (管理)、Primary、および Provision オプションを自動的に選択するはずです。選択されていない場合は、それらを選択してください。
- インターフェース画面には、コンピュートプロファイルの設定が入力された KVM 固有のフィールドが表示されます。必要に応じてこれらの設定を変更します。
オペレーティングシステム タブ:
- すべてのフィールドには値が自動的に含まれるはずです。オペレーティングシステムの各要素を確認してください。
-
プロビジョニング方法 が
イメージベース
に設定されていることを確認します。新規の イメージ フィールドが表示されます。このフィールドから、新規ホストの root ボリュームのベースとしてイメージを選択できます。これは、ホスト タブで選択されたコンピュートプロファイルから自動的に設定されます。 - プロビジョニングテンプレート で 解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
仮想マシン タブ:
- これらの設定には、選択されたホストグループおよびコンピュートプロファイルの詳細が入力されているはずです。必要に応じてこれらの設定を変更します。
パラメーター タブ:
-
kt_activation_keys
パラメーターが存在し、サンプル
のアクティべーションキーを使用していることを確認します。
-
送信 をクリックします。
CLI を使用する場合
hammer host create
コマンドでホストを作成し、--provision-method image
を組み込んでイメージベースのプロビジョニングを使用します。以下は例になります。
# hammer host create --name "kvm-test2" --organization "ACME" --location "New York" --hostgroup "Base" --compute-resource "ACME's 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=acmenetwork" --compute-attributes="cpus=1,memory=1073741824" --volume="pool_name=default,capacity=20G,format_type=qcow2"
このコンピュートリソースの追加のホスト作成パラメーターについての詳細は、付録B Hammer CLI の追加のホストパラメーター を参照してください。
新規ホストのエントリーは KVM サーバーが新規ボリュームのベースとして既存イメージを使用し、仮想マシンを作成するようトリガーします。
7.8. 章の概要
本章では、KVM サーバーを使用するよう Red Hat Satellite 6 を設定し、KVM サーバーを使用して新規ホストをプロビジョニングする方法を説明しました。これには、ネットワークベースのホストおよびイメージベースのホストの両方が含まれました。
Red Hat Satellite 6 で設定する必要のあるコンピュートリソースが他にない場合は、13章プロビジョニングの最終設定 のプロビジョニングについての最終メモを参照してください。
次章では、Red Hat Enterprise Virtualization 環境からのプロビジョニング方法について説明します。