第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 リポジトリーの同期」 を参照してください。
- 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. Satellite Server への KVM 接続の追加
このプロセスでは、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.3 ではまだ実装されていません。代替方法として、ホストの作成プロセスで同じ設定を直接組み込むことができます。
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. noVNC コンソールの設定
以下の手順に従い、KVM サーバーおよびブラウザーを設定して NoVNC コンソールを使用できるようにします。
作業を開始する前の注意事項
-
Foreman
ユーザー用に SSH キーを設定する必要があります。詳細は、Satellite Server での KVM 接続の設定 を参照してください。 - 既存の Libvirt ゲストに関しては、コンピュートリソース 設定の ディスプレイタイプ が、VNC である点を確認します。詳細は、Satellite Server への KVM 接続の追加 を参照してください。
noVNC コンソールを設定するには、以下の手順を実行します。
KVM ホストシステムで、VNC サービスをポート 5900 から 5930 まで許可するようにファイアウォールを設定します。
Red Hat Enterprise Linux 6 の場合:
# iptables -A INPUT -p tcp --dport 5900:5930 -j ACCEPT # service iptables save
Red Hat Enterprise Linux 7 の場合:
# firewall-cmd --add-port=5900-5930/tcp # firewall-cmd --add-port=5900-5930/tcp --permanent
Firefox ブラウザーで、Satellite Server のパブリックダウンロードページ (例: https://satellite.example.com/pub/) に移動し、証明書ファイル katello-server-ca.crt をクリックします。
- 表示 をクリックして CA 証明書を開きます。
- 発行済み 一覧で、コモンネーム (CN) が Satellite Server の FQDN であることを確認し、閉じる をクリックします。
- この CA を信頼して Website を特定 を選択し、OK をクリックします。
Firefox ブラウザーで、HTTP Strict Transport Security (HSTS) を無効にします。たとえば、ブラウザーのアドレスバーに
About:Config
と入力し、以下のブール値をTrue
に設定します。network.websocket.allowInsecureFromHTTPS
HSTS に関する詳細情報は、HTTP Strict Transport Security (HSTS) を参照してください。
- Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動し、Libvirt リソースの名前を選択します。
- 仮想マシン タブで、Libvirt ゲストの名前を選択します。マシンの電源がオンになっていることを確認してから、コンソール を選択します。
コンソールウィンドウは noVNC ハンドシェイクの完了後に表示されます。
7.9. 本章のまとめ
本章では、Red Hat Satellite 6 を設定して KVM サーバーを使用する方法と、KVM サーバーを使用して新規ホストをプロビジョニングする方法を説明しました。ここでは、ネットワークベースのホストおよびイメージベースのホストの両方について紹介しました。
Red Hat Satellite 6 で設定が必要なコンピュートリソースが他にない場合は、13章プロビジョニングの最終設定 のプロビジョニングについての最終メモを参照してください。
次章では、Red Hat Virtualization 環境からのプロビジョニング方法について説明します。