7.4. テンプレートとしてのデプロイに備えた仮想マシンのシーリング

本セクションでは、Linux および Windows の仮想マシンをシーリングする手順について説明します。シーリングとは、仮想マシンをベースにテンプレートを作成する前に、その仮想マシンのシステム固有の情報をすべて削除するプロセスです。シーリングは、同じテンプレートをベースにして作成した複数の仮想マシンで同じ情報が使用されるのを防ぐのに必要です。また、予測可能な 仮想 NIC の順序などのその他の機能が確実に動作するためにも不可欠です。

7.4.1. テンプレートとしてデプロイする Linux 仮想マシンのシーリング

Linux 仮想マシンを使用したテンプレート作成に備えて仮想マシンをシーリングするには、手動または sys-unconfig コマンドを使用する 2 つの主要な方法があります。Linux 仮想マシンを手動でシーリングするには、次回仮想マシンを起動する際にさまざまな設定タスクを開始するフラグの役割を果たすファイルを、仮想マシンに作成する必要があります。sys-unconfig コマンドを使用する場合は、このプロセスを自動化できます。ただし、いずれの手法でも、シーリングする仮想マシンに固有のファイルや、その仮想マシンをベースにして作成したテンプレートを使用して作成された仮想マシンの間で競合発生の原因となる可能性があるファイルを手動で削除する必要があります。したがって、これらの手法は、Linux 仮想マシンをシーリングする手法としていずれも有効で、同じ結果が得られます。

7.4.1.1. テンプレートとしてデプロイする Linux 仮想マシンの手動シーリング

Linux の仮想マシンをベースにテンプレートを作成する場合には、その仮想マシンをあらかじめ一般化 (シーリング) しておく必要があります。

手順7.9 Linux 仮想マシンのシーリング

  1. 仮想マシンにログインします。
  2. システムを再設定するためのフラグを付けます。
    # touch /.unconfigured
  3. ssh ホストキーを削除します。
    # rm -rf /etc/ssh/ssh_host_*
  4. /etc/sysconfig/networkHOSTNAME=localhost.localdomain を設定します。
  5. /etc/udev/rules.d/70-* を削除します。
    # rm -rf /etc/udev/rules.d/70-*
  6. /etc/sysconfig/network-scripts/ifcfg-eth* から HWADDRUUID の行を削除します。
  7. 任意で /var/log から全ログを削除し、/root からのログを作成します。
  8. 仮想マシンをシャットダウンします。
    # poweroff
仮想マシンがシーリングされ、テンプレートを作成できるようになりました。設定ファイルの競合が発生することなく、このテンプレートから Linux 仮想マシンをデプロイすることができます。

7.4.1.2. テンプレートとしてデプロイする Linux 仮想マシンを sys-unconfig でシーリングする手順

Linux の仮想マシンをベースにテンプレートを作成する場合には、その仮想マシンをあらかじめ一般化 (シーリング) しておく必要があります。

手順7.10 sys-unconfig を使用した Linux 仮想マシンのシーリング

  1. 仮想マシンにログインします。
  2. ssh ホストキーを削除します。
    # rm -rf /etc/ssh/ssh_host_*
  3. /etc/sysconfig/networkHOSTNAME=localhost.localdomain を設定します。
  4. /etc/sysconfig/network-scripts/ifcfg-eth* から HWADDRUUID の行を削除します。
  5. 任意で /var/log から全ログを削除し、/root からのログを作成します。
  6. 次のコマンドを実行します。
    # sys-unconfig
仮想マシンがシャットダウンされて、シーリング済みの状態となり、テンプレートを作成できるようになりました。設定ファイルの競合が発生することなく、このテンプレートから Linux 仮想マシンをデプロイすることができます。

7.4.2. テンプレートとしてデプロイする Windows 仮想マシンのシーリング

Windows 仮想マシン用に作成されたテンプレートは、仮想マシンのデプロイに使用する前に一般化 (シール) する必要があります。この処理により、仮想マシン固有の設定はテンプレートで再現されなくなります。
Windows テンプレートを使用前にシールするには、Sysprep ツールを使用します。

重要

このプロセスの実行中には、仮想マシンを再起動しないでください。
Sysprep プロセスを開始する前には、以下のように設定されているかどうかを確認します。
  • Windows Sysprep パラメーターが正しく定義されていること。
    正しく定義されていない場合には、仮想マシンの 編集 をクリックして、オペレーティングシステム および ドメイン のフィールドに必要な情報を入力します。
  • Manager の /etc/ovirt-engine/osinfo.conf.d/10-productkeys.properties オーバーライドファイルに、正しいプロダクトキーが定義されていること。
    正しく定義されていない場合には、/etc/ovirt-engine/osinfo.conf.d/00-defaults.properties から Windows オペレーティングシステム用のデフォルト値をオーバーライドファイルにコピーし、productKey.value および sysprepPath.value のフィールドに適切な値を入力します。

    例7.1 Windows 7 のデフォルト設定値

    # Windows7(11, OsType.Windows, false),false
    os.windows_7.id.value = 11
    os.windows_7.name.value = Windows 7
    os.windows_7.derivedFrom.value = windows_xp
    os.windows_7.sysprepPath.value = ${ENGINE_USR}/conf/sysprep/sysprep.w7
    os.windows_7.productKey.value =
    os.windows_7.devices.audio.value = ich6
    os.windows_7.devices.diskInterfaces.value.3.3 = IDE, VirtIO_SCSI, VirtIO
    os.windows_7.devices.diskInterfaces.value.3.4 = IDE, VirtIO_SCSI, VirtIO
    os.windows_7.devices.diskInterfaces.value.3.5 = IDE, VirtIO_SCSI, VirtIO
    os.windows_7.isTimezoneTypeInteger.value = false

7.4.2.1. Windows 7 または Windows 2008 テンプレートのシーリング手順

テンプレートを使用して仮想マシンをデプロイする前に、Windows 7 または Windows 2008 のテンプレートをシーリングします。

手順7.11 Windows 7 または Windows 2008 テンプレートのシーリング手順

  1. C:\Windows\System32\sysprep\sysprep.exe から Sysprep を起動します。
  2. 以下の情報を Sysprep ツールに入力します。
    • システムクリーンアップアクション 下で、システムの OOBE (Out-of-Box-Experience) に入る を選択します。
    • コンピューターのシステム識別番号 (SID) を変更する必要がある場合には、一般化する チェックボックスにチェックを入れます。
    • シャットダウンオプション で、シャットダウン を選択します。
  3. OK をクリックするとシーリングプロセスが完了します。仮想マシンは、処理が完了すると自動的にシャットダウンされます。
Windows 7 または Windows 2008 のテンプレートがシーリングされ、仮想マシンをデプロイする準備が整いました。

7.4.3. Cloud-Init を使用した仮想マシンの設定の自動化

Cloud-Init は、ホスト名、ネットワークインターフェース、承認キーなどの仮想マシンの初期設定を自動化するためのツールです。テンプレートをベースにデプロイされた仮想マシンをプロビジョニングする際に、ネットワーク上における競合を回避するために使用することができます。
このツールを使用するには、まず仮想マシンに cloud-init パッケージをインストールする必要があります。インストールの完了後には、ブートプロセス中に Cloud-Init サービスが起動し、設定の指示を検索するようになります。次に 1 回実行 ウィンドウのオプションを使用してそれらの指示を 1 回のみ指定するか、新規仮想マシン仮想マシンの編集テンプレートの編集 ウィンドウのオプションで、仮想マシンが毎回起動するたびにそれらの指示を指定するようすることができます。

7.4.3.1. Cloud-Init のユースケースシナリオ

Cloud-Init を使用すると、さまざまなシナリオの仮想マシン設定を自動化することができます。一般的なシナリオには以下のような例があります。
テンプレートをベースとして作成された仮想マシン
1 回実行 ウィンドウの 初期起動 のセクションの Clund-Init オプションを使用して、テンプレートをベースに作成された仮想マシンを初期化することができます。これにより、仮想マシンの初回起動時の設定をカスタマイズすることができます。
仮想マシンのテンプレート
新規テンプレート および テンプレートの編集 ウィンドウの 初回起動 タブで Cloud-Init/Sysprep を使用 のオプションを使用して、そのテンプレートをベースに作成される仮想マシンをカスタマイズするオプションを指定することができます。
仮想マシンプール
新規プール ウィンドウの 初回起動 タブで、Cloud-Init/Sysprep を使用 オプションを使用して、仮想マシンプールから取得する仮想マシンをカスタマイズするオプションを指定することができます。これにより、仮想マシンプールから仮想マシンが取得される度に適用される標準の設定項目一式を指定することができます。仮想マシンのベースとなるテンプレートに指定されているオプションは、継承または上書きしたり、仮想マシンプール自体にオプションを指定したりすることができます。

7.4.3.2. Cloud-Init のインストール

以下の手順は、仮想マシンに Cloud-Init をインストールする方法を説明します。Cloud-Init がインストールされたら、この仮想マシンをベースにしたテンプレートを作成することができます。このテンプレートで作成された仮想マシンは、起動時のホスト名、タイムゾーン、root パスワード、認証キー、ネットワークインターフェース、DNS サービスの設定など、Cloud-Init の機能を活用することができます。

手順7.12 Cloud-Init のインストール

  1. 仮想マシンにログオンします。
  2. 必要なリポジトリーを有効にします。
    • Red Hat Enterprise Linux 6 の場合:
      # subscription-manager repos --enable=rhel-6-server-rpms
      # subscription-manager repos --enable=rhel-6-server-rh-common-rpms
    • Red Hat Enterprise Linux 7 の場合:
      # subscription-manager repos --enable=rhel-7-server-rpms
      # subscription-manager repos --enable=rhel-7-server-rh-common-rpms
  3. cloud-init パッケージと依存関係をインストールします。
    # yum install cloud-init

7.4.3.3. Cloud-Init を使用したテンプレートの準備

cloud-init パッケージが Linux 仮想マシンにインストールされている限りは、仮想マシンにより Cloud-Init が有効化されたテンプレートを作成することができます。以下の手順に記載されているように、テンプレートの含まれる一連の標準設定を指定するか、Cloud-Init の設定ステップを省略して、このテンプレートをベースにして仮想マシンを作成する際に設定します。

注記

以下の手順では、テンプレートの作成時における Cloud-Init の使用方法について説明していますが、同じ設定を 新規仮想マシン および テンプレートの編集1 回実行 ウィンドウでも使用できます。

手順7.13 Cloud-Init を使用したテンプレートの準備

  1. 仮想マシン タブをクリックして、仮想マシンを 1 つ選択します。
  2. 編集 をクリックします。
  3. 初期起動 タブをクリックし Cloud-Init/Sysprep を使用 のチェックボックスを選択します。
  4. 仮想マシンのホスト名 のテキストフィールドにホスト名を入力します。
  5. タイムゾーンを設定 のチェックボックスを選択し、タイムゾーン のドロップダウンリストからタイムゾーンを選択します。
  6. 認証 のセクションを展開し、設定済みのパスワードを使用 のチェックボックスを選択して既存の認証情報を使用するか、チェックを外して パスワードパスワードを確認 のテキストフィールドに root のパスワードを入力して新しい root パスワードを指定します。
  7. SSH 認証キー のテキストフィールドに 仮想マシン上の承認済みホストのファイルに追加する SSH キーを入力します。
  8. SSH キーを再生成 のチェックボックスを選択して仮想マシン用の SSH キーを再生成します。
  9. ネットワーク のセクションを展開し、DNS サーバー のテキストフィールドに任意の DNS サーバーを入力します。
  10. DNS 検索ドメイン のテキストフィールドに任意の DNS 検索ドメインを入力します。
  11. ネットワーク のチェックボックスを選択して + および - のボタンを使用して仮想マシンにネットワークインターフェースを追加または削除します。
  12. カスタムスクリプト のセクションを展開し、カスタムスクリプト のテキストフィールドに任意のカスタムスクリプトを入力します。
  13. OK をクリックします。
  14. テンプレートを作成 をクリックし、必要に応じてフィールドに入力します。
  15. OK をクリックします。
このテンプレートを使用して、新規仮想マシンをプロビジョニングできるようになりました。

7.4.3.4. Cloud-Init を使用した仮想マシンの設定の初期化

cloud-init を使用して、Linux 仮想マシンの初期設定を自動化します。Cloud-Init フィールドを使用して、仮想マシンのホスト名、タイムゾーン、root パスワード、認証キー、ネットワークインターフェース、DSN サービスを設定することができます。また、カスタムスクリプト (YAML 形式のスクリプト) を指定して、起動時に実行することもできます。このカスタムスクリプトにより、Cloud-Init でサポートされるが、Cloud-Init フィールドに存在しない追加の Cloud-Init 設定を指定することができます。カスタムスクリプトに関する詳しい情報は、Cloud config examples を参照してください。

手順7.14 Cloud-Init を使用した仮想マシンの設定の初期化

以下の手順では、一連の Cloud-Init の設定が指定された仮想マシンを起動します。仮想マシンがベースにするテンプレートに、関連の設定が含まれる場合には、随時変更を加え、OK をクリックして仮想マシンを起動します。
  1. 仮想マシン タブをクリックして、仮想マシンを 1 つ選択します。
  2. 1 回実行 をクリックします。
  3. 初期起動 セクションを展開し、Cloud-Init チェックボックスを選択します。
  4. 仮想マシンのホスト名 のテキストフィールドにホスト名を入力します。
  5. タイムゾーンを設定 のチェックボックスを選択し、タイムゾーン のドロップダウンメニューからタイムゾーンを選択します。
  6. 設定済みのパスワードを使用 のチェックボックスを選択して既存の認証情報を使用するか、チェックを外して パスワードパスワードを確認 のテキストフィールドに root のパスワードを入力し、新しい root パスワードを指定します。
  7. SSH 認証キー のテキストフィールドに 仮想マシン上の承認済みホストのファイルに追加する SSH キーを入力します。
  8. SSH キーを再生成 のチェックボックスを選択して仮想マシン用の SSH キーを再生成します。
  9. DNS サーバー のテキストフィールドに任意の DNS サーバーを入力します。
  10. DNS 検索ドメイン のテキストフィールドに任意の DNS 検索ドメインを入力します。
  11. ネットワーク のチェックボックスを選択して + および - のボタンを使用して仮想マシンにネットワークインターフェースを追加または削除します。
  12. カスタムスクリプト のテキストフィールドに任意のカスタムスクリプトを入力します。スクリプトで指定した値が適切であることを確認します。適切でない場合にはアクションが失敗します。
  13. OK をクリックします。

注記

仮想マシンに Cloud-Init がインストールされているかを確認するには、仮想マシンを選択して、アプリケーション のサブタブをクリックします。ゲストエージェントがインストールされている場合にのみ表示されます。