第6章 KVM サーバー (libvirt) での仮想マシンのプロビジョニング
カーネルベースの仮想マシン (KVM) はオープンソースの仮想化デーモンおよび Red Hat Enterprise Linux で実行される libvirt
という API を使用します。Red Hat Satellite 6 は KVM サーバーで libvirt
API に接続でき、ハイパーバイザーにホストをプロビジョニングし、特定の仮想化機能を制御することができます。
6.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
にあります。
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 管理ガイド』の「ロールへのパーミッションの追加」を参照してください。
6.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
libvirt-client
パッケージをインストールします。# yum install libvirt-client
以下のコマンドを使用して、KVM サーバーへの接続をテストします。
$ virsh -c qemu+ssh://root@kvm.example.com/system list
Satellite Server で KVM 接続を追加する場合、
qemu+ssh
プロトコルおよびサーバーのアドレスを使用します。たとえば、qemu+ssh://root@kvm.example.com/system
のようになります。
6.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 を選択します。
オプション: 無作為に生成したパスワードで、新規ホストのコンソールアクセスのセキュリティーを確保するには、ディスプレイ接続時にランダムに生成されたパスワードを設定します というチェックボックスを選択します。以下のコマンドの出力から、
libvirtd
ホストからゲスト仮想マシンコンソールにアクセスするための、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"
6.4. Satellite Server での KVM イメージの追加
イメージベースのプロビジョニングを使用してホストを作成する場合は、イメージの情報を Satellite Server に追加する必要があります。これには、アクセスの情報およびイメージの場所が含まれます。
手順
Satellite Server に KVM イメージを追加するには、以下の手順を行います。
- Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで KVM 接続の名前をクリックします。
- イメージ タブをクリックして、新規イメージ をクリックします。
- 名前 フィールドに、イメージの名前を入力します。
- オペレーティングシステム リストから、イメージのベースオペレーティングシステムを選択します。
- アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
-
ユーザー名 フィールドには、イメージにアクセスするための 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 version" --architecture "x86_64" --username root \ --user-data false --uuid "/var/lib/libvirt/images/TestImage.qcow2" \ --compute-resource "My_KVM_Server"
6.5. KVM の詳細のコンピュートプロファイルへの追加
コンピュートプロファイルにこれらのハードウェア設定を追加して、KVM ベースの仮想マシンに特定のハードウェア設定を事前に定義することができます。
手順
Red Hat Virtualization の詳細をコンピュートプロファイルに追加するには、以下の手順を行います。
- Satellite Web UI で インフラストラクチャー > コンピュートプロファイル に移動して、コンピュートプロファイルのウィンドウで KVM 接続の名前をクリックします。
- CPU フィールドには、新規ホストに割り当てる CPU の数を入力します。
- メモリー フィールドには、新規ホストに割り当てるメモリーの容量を入力します。
- イメージ リストから、イメージベースのプロビジョニングを実行する場合には、使用するイメージを選択します。
- ネットワークインターフェース リストから、ホストのネットワークインターフェースのネットワークパラメーターを選択します。ネットワークインターフェースは複数作成できますが、最低でも 1 つのインターフェース は Capsule が管理するネットワークを参照する必要があります。
- ストレージ エリアには、ホストのストレージパラメーターを入力します。ホストのボリュームは複数作成できます。
- 送信 をクリックしてコンピュートプロファイルの設定を保存します。
CLI を使用する場合
コンピュートプロファイルの CLI コマンドは、Red Hat Satellite 6.4 ではまだ実装されていません。代替方法として、ホストの作成プロセスで同じ設定を直接組み込むことができます。
6.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"
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 の追加のホストパラメーター」を参照してください。
6.7. 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 ハンドシェイクの完了後に表示されます。