第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 を設定するには、次の手順を実行します。
Satellite Server で
Foreman
ユーザーに切り替えます。# su foreman -s /bin/bash
キーペアを生成します。
$ ssh-keygen
公開キーを KVM サーバーにコピーします。
$ ssh-copy-id root@kvm.example.com
foreman
ユーザーのバッシュシェルを終了します。$ exit
libvirt-client
パッケージをインストールします。# satellite-maintain packages install libvirt-client
以下のコマンドを使用して、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 接続を追加するには、以下の手順を行います。
- Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで コンピュートリソースの作成 をクリックします。
- 名前 フィールドには、新規コンピュートリソースの名前を入力します。
- プロバイダー の一覧から Libvirt を選択します。
- 説明 フィールドには、コンピュートリソースの説明を入力します。
URL フィールドには、KVM サーバーへの
libvirt
への接続 URL を入力します。以下に例を示します。qemu+ssh://root@kvm.example.com/system
- ディスプレイタイプ リストから、VNC または Spice を選択します。
オプション: 無作為に生成したパスワードで、新規ホストのコンソールアクセスのセキュリティーを確保するには、ディスプレイ接続時にランダムに生成されたパスワードを設定します というチェックボックスを選択します。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 などで、仮想マシンのコンソールを開くたびに無作為に生成されます。
- テスト接続 をクリックして Satellite Server が KVM サーバーに問題なく接続できることを確認します。
- ロケーション および 組織 タブは現在のコンテキストに自動的に設定されていることを確認します。他のコンテキストをこれらのタブに追加します。
- 送信 をクリックして 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 イメージを追加するには、以下の手順を行います。
- Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで KVM 接続の名前をクリックします。
- イメージ タブをクリックして、イメージの作成 をクリックします。
- 名前 フィールドに、イメージの名前を入力します。
- オペレーティングシステム リストから、イメージのベースオペレーティングシステムを選択します。
- アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
-
ユーザー名 フィールドには、イメージにアクセスするための SSH ユーザー名を入力します。通常、これは
root
ユーザーになります。 - パスワード フィールドには、イメージにアクセスするための SSH パスワードを入力します。
-
ユーザーデータ リストから、イメージが
cloud-init
データなどのユーザーデータ入力をサポートするかどうかを設定します。 イメージパス フィールドには、KVM サーバーのイメージを参照する完全パスを入力します。以下に例を示します。
/var/lib/libvirt/images/TestImage.qcow2
- 送信 をクリックしてイメージの詳細を保存します。
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 の詳細をコンピュートプロファイルに追加するには、以下の手順を行います。
- Satellite Web UI で、インフラストラクチャー > コンピュートプロファイル に移動します。
- コンピュートプロファイルのウィンドウで、既存のコンピュートリソースの名前をクリックするか、コンピュートプロファイルの作成 をクリックして、コンピュートプロファイルの作成に使用するコンピュートリソースを選択します。
- CPU フィールドには、新規ホストに割り当てる CPU の数を入力します。
- メモリー フィールドには、新規ホストに割り当てるメモリーの容量を入力します。
- イメージ リストから、イメージベースのプロビジョニングを実行する場合には、使用するイメージを選択します。
- ネットワークインターフェース リストから、ホストのネットワークインターフェースのネットワークパラメーターを選択します。ネットワークインターフェースは複数作成できますが、最低でも 1 つのインターフェース は Capsule が管理するネットワークを参照する必要があります。
- ストレージ エリアには、ホストのストレージパラメーターを入力します。ホストのボリュームは複数作成できます。
- 送信 をクリックしてコンピュートプロファイルの設定を保存します。
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 ホストを作成するには、以下の手順を行います。
- Satellite Web UI で、ホスト > ホストの作成 に移動します。
- 名前 フィールドには、プロビジョニングされたシステムのホスト名に設定する名前を入力します。
- 組織 および ロケーション タブをクリックして、プロビジョニングのコンテキストが現在のコンテキストに自動的に設定されていることを確認します。
- ホストグループ リストから、フォームの生成に使用するホストグループを選択します。
- デプロイ先 リストから、KVM 接続を選択します。
- コンピュートプロファイル リストから、仮想マシンベースの設定を自動的に投入するために使用するプロファイルを選択します。
- インターフェース タブをクリックして、ホストのインターフェースで 編集 をクリックします。
フィールドに値が自動投入されていることを確認します。特に以下に注意してください。
- ホスト タブの 名前 は DNS 名 になります。
- Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
- MAC アドレス フィールドは空白であることを確認します。KVM サーバーは、MAC アドレスをホストに割り当てます。
- ホストの最初のインターフェースで Managed (管理)、Primary、および Provision オプションが自動的に選択されていることを確認します。選択されていない場合は、それらを選択してください。
- インターフェースウィンドウで、KVM 固有のフィールドにコンピュートプロファイルの設定が入力されていることを確認します。必要に応じてこれらの設定を変更します。
- オペレーティングシステム タブをクリックして、全フィールドに値が自動的に含まれていることを確認します。
-
ネットワークベースのプロビジョニングでは、プロビジョニング方法 が
ネットワークベース
に設定されており、イメージベースのプロビジョニングでは プロビジョニング方法 がイメージベース
に設定されていることを確認します。 - プロビジョニングテンプレート で 解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
- 仮想マシン タブをクリックして、これらの設定には、ホストグループおよびコンピュートプロファイルからの情報が入力されていることを確認し、必要に応じて変更してください。
- パラメーター タブをクリックして、存在するパラメーターでアクティベーションキーが提供されていることを確認します。提供されていない場合には、アクティベーションキーを追加します。
- 送信 をクリックしてホストエントリーを保存します。
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 の追加のホストパラメーター」を参照してください。