第11章 VMware vSphere での仮想マシンのプロビジョニング

VMware vSphere は VMware のエンタープライズクラスの仮想化プラットフォームです。Red Hat Satellite 6 は、新規仮想マシンの作成やそれらの電源状態の制御を含む、vSphere プラットフォームとの対話を実行することができます。

11.1. VMware vSphere プロビジョニングの要件

VMware vSphere プロビジョニングの要件には以下が含まれます。

  • vSphere 環境でネットワークを管理する Capsule Server。Capsule Server との競合を避けるために DHCP サービスがこのネットワークで実行されていないことを確認します。詳細は、「3章ネットワークの設定」を参照してください。
  • 既存の VMware テンプレート (イメージベースのプロビジョニングを使用する場合)。
  • Red Hat Enterprise Linux の同期済みのコンテンツリポジトリー。詳細は、『コンテンツ管理ガイド』の「Red Hat リポジトリーの同期」を参照してください。
  • ホスト登録用のアクティベーションキー。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの作成」を参照してください。

11.2. VMware vSphere ユーザーの作成

VMware vSphere サーバーには、Satellite Server の通信用に管理者に相当するユーザーが必要になります。セキュリティー上の理由により、この通信に administrator ユーザーを使用しないことをお勧めします。その代わりに、以下の権限を持つ新規のユーザーを作成してください。

VMware vCenter Server バージョン 6.7 の場合は、以下のパーミッションを設定します。

  • All Privileges (すべての権限)→ Allocate Space (領域の割り当て)、Browse datastore (データストアの参照)、Update Virtual Machine files (仮想マシンファイルの更新)、Low level file operations (ローレベルのファイル操作)
  • All Privileges (すべての権限)→ Network (ネットワーク) → Assign Network (ネットワークの割り当て)
  • All Privileges (すべての権限) → Resource (リソース) → Assign virtual machine to resource pool (仮想マシンのリソースプールへの割り当て)
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン) → Change Config (All) (設定の変更 (すべて))
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン)→ Interaction (All) (対話 (すべて))
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン) → Edit Inventory (インベントリーの編集)
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン)→ Provisioning (All) (プロビジョニング (すべて))

VMware vCenter Serverバージョン 6.5 の場合には、次のパーミッションを設定します。

  • All Privileges (すべての権限)→ Allocate Space (領域の割り当て)、Browse datastore (データストアの参照)、Update Virtual Machine files (仮想マシンファイルの更新)、Low level file operations (ローレベルのファイル操作)
  • All Privileges (すべての権限)→ Network (ネットワーク) → Assign Network (ネットワークの割り当て)
  • All Privileges (すべての権限) → Resource (リソース) → Assign virtual machine to resource pool (仮想マシンのリソースプールへの割り当て)
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン) → Configuration (All) (設定 (すべて))
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン)→ Interaction (All) (対話 (すべて))
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン) → Inventory (All) (インベントリー (All))
  • All Privileges (すべての権限)→ Virtual Machine (仮想マシン)→ Provisioning (All) (プロビジョニング (すべて))

11.3. Satellite Server への VMware vSphere 接続の追加

この手順を使用して、Satellite Server のコンピュートリソースに VMware vSphere 接続を追加します。

Satellite が TCP ポート 443 を介して vCenter と通信できるよう、ホストおよびネットワークベースのファイアウォールが設定されていることを確認します。Satellite が vCenter のホスト名を解決でき、vCenter が Satellite Server のホスト名を解決できることを確認します。

手順

接続を追加するには、以下の手順を行います。

  1. Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで コンピュートリソースの作成 をクリックします。
  2. 名前 フィールドに、リソースの名前を入力します。
  3. プロバイダー の一覧から VMware を選択します。
  4. 説明 フィールドには、リソースの説明を入力します。
  5. VCenter/Server (サーバー) フィールドには、vCenter サーバーの IP アドレスまたはホスト名を入力します。
  6. ユーザー フィールドには、ユーザー名と、vCenter のリソースにアクセスするためのパーミッションを入力します。
  7. パスワード フィールドで、ユーザーのパスワードを入力します。
  8. データセンターのロード をクリックして、VMware vSphere 環境からデータセンターリストを生成します。
  9. データセンター リストから、このリストから管理する特定のデータセンターを選択します。
  10. フィンガープリント フィールドは、データセンターからのフィンガープリントが投入されていることを確認します。
  11. ディスプレイタイプ リストから、VNCVMRC などのコンソールタイプを選択します。VNC コンソールは VMware ESXi 6.5 以降ではサポートされません。
  12. オプション: VNC コンソールパスワード フィールドでは、ディスプレイ接続時にランダムに生成されたパスワードを設定します チェックボックスを選択して、無作為に作成されたパスワードで、新規ホストへのアクセスのセキュリティーを確保します。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 などで、仮想マシンのコンソールを開くたびに無作為に生成されます。

  13. キャッシングの有効化 リストからコンピュートリソースのキャッシングを有効化するかどうかを選択できます。詳細は、「コンピュートリソースのキャッシング」 を参照してください。
  14. ロケーション および 組織 タブをクリックして、値が現在のコンテキストに自動的に設定されていることを確認します。また別のコンテキストを追加することもできます。
  15. 送信 をクリックして接続を保存します。

CLI をご利用の場合

hammer compute-resource create コマンドで接続を作成します。--providerVmware を選択し、--uuid でデータセンターのインスタンス UUID を設定します。

# hammer compute-resource create --name "My_vSphere" \
--provider "Vmware" \
--description "vSphere server at vsphere.example.com" \
--server "vsphere.example.com" --user "My_User" \
--password "My_Password" --locations "My_Location" --organizations "My_Organization" \
--datacenter "My_Datacenter"

11.4. Satellite Server への VMware vSphere イメージの追加

VMware vSphere は、新規仮想マシンを作成するためのイメージとしてテンプレートを使用します。イメージベースのプロビジョニングを使用して新規ホストを作成する場合、VMware vSphere テンプレートの詳細を Satellite Server に追加する必要があります。これには、アクセスの詳細およびテンプレート名が含まれます。

手順

イメージを追加するには、以下のステップを実行します。

  1. Satellite Web UI で インフラストラクチャー > コンピュートリソース に移動して、コンピュートリソースのウィンドウで VMware vSphere 接続をクリックします。
  2. 名前 フィールドに、イメージの名前を入力します。
  3. オペレーティングシステム リストから、イメージのベースオペレーティングシステムを選択します。
  4. アーキテクチャー リストから、オペレーティングシステムのアーキテクチャーを選択します。
  5. ユーザー フィールドには、イメージにアクセスするための SSH ユーザー名を入力します。通常、これは root ユーザーになります。
  6. パスワード フィールドには、イメージにアクセスするための SSH パスワードを入力します。
  7. ユーザーデータ リストから、イメージが cloud-init データなどのユーザーデータ入力をサポートするかどうかを設定します。
  8. イメージ フィールドには vSphere 環境でのテンプレートの相対パスおよび名前を入力します。相対パスにデータセンターを追加しないでください。
  9. 送信 をクリックしてイメージの詳細を保存します。

CLI をご利用の場合

hammer compute-resource image create コマンドでイメージを作成します。--uuid フィールドを使用して vSphere 環境の相対テンプレートパスを保存します。

# hammer compute-resource image create --name "Test_vSphere_Image" \
--operatingsystem "RedHat 7.2" --architecture "x86_64" \
--username root --uuid "Templates/RHEL72" \
--compute-resource "My_vSphere"

11.5. VMware vSphere の詳細のコンピュートプロファイルへの追加

VMware vSphere の仮想マシンの特定のハードウェア設定を事前に定義することができます。これは、これらのハードウェア設定をコンピュートプロファイルに追加することで実行できます。

手順

VMware vSphere の詳細をコンピュートプロファイルに追加するには、以下の手順を行います。

  1. Satellite Web UI で インフラストラクチャー > コンピュートプロファイル に移動して、コンピュートプロファイルのウィンドウで vSphere 接続の名前をクリックします。
  2. CPU フィールドには、新規ホストに割り当てる CPU の数を入力します。
  3. 1 ソケットあたりのコア数 フィールドには各 CPU に割り当てるコアの数を入力します。
  4. メモリー フィールドには、新規ホストに割り当てるメモリーの容量を入力します。
  5. クラスター フィールドには、VMware 環境のターゲットホストクラスター名を入力します。
  6. リソースプール リストから、ホストに対して利用可能なリソース割り当てを選択します。
  7. フォルダー フィールドには、ホストを整理するためのフォルダーを入力します。
  8. ゲスト OS リストから、VMware vSphere で使用するオペレーティングシステムを選択します。
  9. SCSI コントローラー リストから、ホストのディスクアクセスの方法を選択します。
  10. 仮想ハードウェアのバージョン リストから、仮想マシンに使用する基礎となる VMware ハードウェアの抽象化を定義します。
  11. 仮想マシンの電源をオンにしたままリソースを追加するには、メモリーホット追加 または CPU ホット追加 のチェックボックスを選択します。
  12. イメージ リストから、イメージベースのプロビジョニングを実行する場合には、使用するイメージを選択します。
  13. ネットワークインターフェース リストから、ホストのネットワークインターフェースのネットワークパラメーターを選択します。ネットワークインターフェースは複数作成できますが、最低でも 1 つのインターフェース は Capsule が管理するネットワークを参照する必要があります。
  14. Eager Zero シックプロビジョニングを使用する必要がある場合は、Eager Zero チェックボックスを選択します。これにチェックを付けない場合は、ディスクは Lazy Zero シックプロビジョニングを使用します。
  15. 送信 をクリックしてコンピュートプロファイルを保存します。

CLI をご利用の場合

  1. 以下のコマンドを実行してコンピュートプロファイルを作成します。

    # hammer compute-profile create --name "VMWare CP"
  2. コンピュートプロファイルの値を追加するには、以下のコマンドを入力します。

    # hammer compute-profile values create --compute-profile "VMWare CP" \
    --compute-resource "My_vSphere" \
    --interface "compute_type=VirtualE1000,compute_network=mynetwork \
    --volume "size_gb=20G,datastore=Data,name=myharddisk,thin=true" \
    --compute-attributes "cpus=1,corespersocket=2,memory_mb=1024,cluster=MyCluster,path=MyVMs,start=true"

11.6. VMware vSphere サーバーでのホストの作成

VMware vSphere プロビジョニングプロセスでは、ネットワーク接続経由で、あるいは既存のイメージを使用してホストを作成するオプションがあります。

ネットワークベースのプロビジョニングでは、ホストが PXE プロビジョニングサービスにアクセスできるように、新規ホストは VMware vSphere 仮想マシン上にある Satellite Server の統合 Capsule か、外部の Capsule Server にアクセスできる必要があります。この新しいホストエントリーにより、VMware vSphere サーバーが仮想マシンを作成して起動するようにトリガーします。仮想マシンが仮想ネットワークで定義済みの Capsule Server を検出した場合には、仮想マシンは PXE 機能を使用してブートして、選択したオペレーティングシステムのインストールを開始します。

DHCP の競合

プロビジョニング目的で VMware vSphere サーバーで仮想ネットワークを使用する場合は、DHCP 割り当てを提供しない仮想ネットワークを必ず選択します。DHCP 割り当ては、新規ホストの起動時に Satellite Server との競合を引き起こします。

イメージベースのプロビジョニングでは、既存のイメージを新規ボリュームのベースとして使用します。

手順

VMware vSphere サーバーのホストを作成するには、以下の手順を行います。

  1. Satellite Web UI で、ホスト > ホストの作成 に移動します。
  2. 名前 フィールドには、プロビジョニングされたシステムのホスト名に設定する名前を入力します。
  3. 組織 および ロケーション タブをクリックして、プロビジョニングのコンテキストが現在のコンテキストに自動的に設定されていることを確認します。
  4. ホストグループ リストから、フォームの生成に使用するホストグループを選択します。
  5. デプロイ先 リストから、VMware vSphere 接続を選択します。
  6. コンピュートプロファイル リストから、仮想マシンベースの設定を自動的に投入するために使用するプロファイルを選択します。
  7. インターフェース タブをクリックして、ホストのインターフェースで 編集 をクリックします。
  8. フィールドに値が自動投入されていることを確認します。特に以下に注意してください。

    • ホスト タブの 名前DNS 名 になります。
    • Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
  9. MAC アドレス フィールドが空白であることを確認します。VMware vSphere サーバーは MAC アドレスをホストに割り当てます。
  10. ホストの最初のインターフェースで Managed (管理)Primary、および Provision オプションが自動的に選択されていることを確認します。選択されていない場合は、それらを選択してください。
  11. インターフェースウィンドウには、コンピュートプロファイルの設定が入力された VMware vSphere 固有のフィールドが表示されます。必要に応じてこれらの設定を変更します。
  12. オペレーティングシステム タブをクリックして、全フィールドに値が自動的に含まれていることを確認します。
  13. 必要なプロビジョニング方法を選択します。

    • ネットワークベースのプロビジョニングの場合、ネットワークベース をクリックします。
    • イメージベースのプロビジョニングの場合、イメージベース をクリックします。
    • ブートディスクベースのプロビジョニングの場合、ブートディスクベース をクリックします。
  14. プロビジョニングテンプレート解決 をクリックし、新規ホストから使用する適切なプロビジョニングテンプレートを特定できることを確認します。
  15. 仮想マシン タブをクリックして、これらの設定には、ホストグループおよびコンピュートプロファイルからの詳細情報が入力されていることを確認し、必要に応じて変更してください。
  16. パラメーター タブをクリックして、存在するパラメーターでアクティベーションキーが提供されていることを確認します。提供されていない場合には、アクティベーションキーを追加します。
  17. 送信 をクリックしてホストエントリーを保存します。

CLI をご利用の場合

hammer host create コマンドでネットワークからホストを作成し、--provision-method build を組み込んでネットワークベースのプロビジョニングを使用します。以下は例になります。

# hammer host create --name "vmware-test1" --organization "My_Organization" \
--location "New York" --hostgroup "Base" \
--compute-resource "My_vSphere" --provision-method build \
--build true --enabled true --managed true \
--interface "managed=true,primary=true,provision=true,compute_type=VirtualE1000,compute_network=mynetwork" \
--compute-attributes="cpus=1,corespersocket=2,memory_mb=1024,cluster=MyCluster,path=MyVMs,start=true" \
--volume="size_gb=20G,datastore=Data,name=myharddisk,thin=true"

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、hammer host create --help コマンドを入力します。

CLI をご利用の場合

hammer host create コマンドでイメージからホストを作成し、--provision-method image を指定してイメージベースのプロビジョニングを使用します。以下は例になります。

# hammer host create --name "vmware-test2" --organization "My_Organization" \
--location "New York" --hostgroup "Base" \
--compute-resource "My_VMware" --provision-method image \
--image "Test VMware Image" --enabled true --managed true \
--interface "managed=true,primary=true,provision=true,compute_type=VirtualE1000,compute_network=mynetwork" \
--compute-attributes="cpus=1,corespersocket=2,memory_mb=1024,cluster=MyCluster,path=MyVMs,start=true" \
--volume="size_gb=20G,datastore=Data,name=myharddisk,thin=true"

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、hammer host create --help コマンドを入力します。

11.7. プロビジョニングでの VMware vSphere cloud-init と userdata テンプレートの使用

Cloud-inituserdata テンプレートと VMware を併用して、ユーザーデータを新規の仮想マシンに挿入し、VMware をさらにカスタマイズして、VMware がホストする仮想マシンを使用して Satellite にコールバックできるようになります。

同じ手順を使用して、Satellite 内で、ワークフローに変更をいくつか加えて、VMware コンピューティングリソースを設定できます。

VMware cloud-init プロビジョニングの概要

Satellite で VMware プロビジョニング用にコンピュートリソースとイメージを設定する場合に、プロビジョニングのイベントは以下の順番に発生します。

  • ユーザーが Satellite Web UI、API、または Hammer を使用して 1 つ以上の仮想マシンをプロビジョニングする。
  • Satellite が VMware vCenter を呼び出して仮想マシンテンプレートのクローンを作成する。
  • Satellite userdata のプロビジョニングテンプレートがカスタマイズされたアイデンティティー情報を追加する。
  • プロビジョニングが完了すると、cloud-init プロビジョニングテンプレートが仮想マシンに対して、cloud-init の実行時に Capsule にコールバックするように指示を出す。
  • VMware vCenter がこのテンプレートのクローンを仮想マシンに作成する。
  • VMware vCenter がホスト名、IP、DNS など、仮想マシンの IDのカスタマイズを適用する。
  • 仮想マシンがビルドされて、cloud-init が呼びされ、ポート 80 で Satellite にコールバックしてから、443 にリダイレクトする。

ポートとファイアウォールの要件

cloud-init サービスがあるので、仮想マシンを Capsule に登録している場合でさえも、仮想マシンは常に Satellite に対してコールバックします。必要な接続ができるように、ポートとファイアウォール設定を開くように指定してください。

ポートとファイアウォールの要件に関する詳細は、『Satellite のインストール』の「ポートとファイアウォールの要件」および『Capsule Server のインストール』の「ポートとファイアウォールの要件」を参照してください。

userdata および Cloud-init テンプレートとオペレーティングシステムの関連付け

  1. Satellite Web UI で、ホスト > オペレーティングシステム に移動し、プロビジョニングに使用するオペレーティングシステムを選択します。
  2. テンプレート タブをクリックします。
  3. Cloud-init テンプレート リストから Cloudinit デフォルト を選択します。
  4. User data テンプレート リストからUserData open-vm-tools を選択します。
  5. 送信 をクリックして変更を保存します。

cloud-init テンプレートを使用するためのイメージの準備

イメージを準備するには、先に仮想マシンに必要な設定を行ってからでないと、Satellite で使用するイメージとして保存できません。

プロビジョニングに cloud-init テンプレートを使用するには、cloud-init をインストールして、有効化し、Satellite Server に対してコールバックを行うように、仮想マシンを設定する必要があります。

セキュリティー上の理由から CA 証明書をインストールして、全通信に HTTPS を使用するようにする必要があります。この手順には、不要な情報がプロビジョニングに使用するイメージに転送されないように、仮想マシンをクリーンアップする手順が含まれます。

cloud-init が含まれるイメージの場合は、cloud-init がデフォルトで無効になっているので、cloud-init が Satellite と通信できるように以下の手順を実行する必要があります。

  1. イメージの作成に使用する仮想マシンで、cloud-initopen-vm-tools および perl をインストールします。

    # yum -y install cloud-init open-vm-tools perl
  2. cloud-init の設定ファイルを作成します。

    # vi /etc/cloud/cloud.cfg.d/example_cloud-init_config.cfg
  3. example_cloud_init_config.cfg ファイルに以下の情報を追加します。

    datasource_list: [NoCloud]
    datasource:
      NoCloud:
        seedfrom: https://satellite.example.com/userdata/
    EOF
  4. イメージの CA 証明書を有効にします。

    # update-ca-trust enable
  5. Satellite Server から katello-server-ca.crt ファイルをダウンロードします。

    # wget -O /etc/pki/ca-trust/source/anchors/cloud-init-ca.crt http://satellite.example.com/pub/katello-server-ca.crt
  6. 証明書の記録を更新するには、次のコマンドを入力します。

    # update-ca-trust extract
  7. 次のコマンドを使用して、イメージを消去します。

    # systemctl stop rsyslog
    # systemctl stop auditd
    # package-cleanup -oldkernels -count=1
    # yum clean all
  8. ログスペースの削減、古いログの削除、ログの省略には、以下のコマンドを使用します。

    # logrotate -f /etc/logrotate.conf
    # rm -f /var/log/*-???????? /var/log/*.gz
    # rm -f /var/log/dmesg.old
    # rm -rf /var/log/anaconda
    # cat /dev/null > /var/log/audit/audit.log
    # cat /dev/null > /var/log/wtmp
    # cat /dev/null > /var/log/lastlog
    # cat /dev/null > /var/log/grubby
  9. udev ハードウェアルールを削除します。

    # rm -f /etc/udev/rules.d/70*
  10. ifcfg スクリプトから uuid を削除します。

    # cat > /etc/sysconfig/network-scripts/ifcfg-ens192 <<EOM
    DEVICE=ens192
    ONBOOT=yes
    EOM
  11. SSH ホストキーを削除します。

    # rm -f /etc/ssh/SSH_keys
  12. root ユーザーの Shell 履歴を削除します。

    # rm -f ~root/.bash_history
    # unset HISTFILE
  13. root ユーザーの SSH 履歴を削除します。

    # rm -rf ~root/.ssh/known_hosts

この仮想マシンからイメージを作成できるようになりました。

Satellite にイメージを追加するには、「Satellite Server への VMware vSphere イメージの追加」のセクションを使用してください。

ユーザーデータテンプレートを転送するための Capsule の設定

Capsuleテンプレート機能を使用して Satellite をデプロイする場合に、X-Forwarded-For HTTP ヘッダーで転送されたホストの IP アドレスを認識して正しいテンプレートペイロードを提供するように Satellite を設定する必要があります。

セキュリティー上の理由から Satellite はローカルホストからのみ、この HTTP ヘッダーを認識します。個別の Capsule ごとに、ホストの IP アドレスを認識するための正規表現を設定する必要があります。Web UI で 管理 > 設定 > プロビジョニング に移動して、リモートアドレス の設定を変更します。CLI では、以下のコマンドを入力して設定できます。

# hammer settings set --name remote_addr --value '(localhost(4|6|4to6)?|192.168.122.(1|2|3))'

11.8. コンピュートリソースのキャッシング

コンピュートリソースのキャッシングは、VMware 情報のレンダリングを迅速化します。

11.8.1. コンピュートリソースのキャッシングの有効化

コンピュートリソースのキャッシングを有効化または無効化します。

  1. Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動します。
  2. 更新する VMware サーバーの右側にある 編集 ボタンをクリックします。
  3. キャッシュを有効にする のチェックボックスを選択します。

11.8.2. コンピュートリソースのキャッシュのリフレッシュ

コンピュートリソースのキャッシュをリフレッシュして、コンピュートリソース情報を更新するには、以下を実行します。

手順

  1. Satellite Web UI で、インフラストラクチャー > コンピュートリソース に移動します。
  2. コンピュートリソースのキャッシュをリフレッシュする VMware サーバーを選択し、キャッシュのリフレッシュ ボタンをクリックします。

CLI をご利用の場合

この API の呼び出しを使用して、コンピュートリソースのキャッシュをリフレッシュします。

# curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" -X PUT \
-u username:password -k \
https://satellite.example.com/api/compute_resources/compute_resource_id/refresh_cache

hammer compute-resource list コマンドを使用して、コンピュートリソースのキャッシュをリフレッシュする VMware サーバーの ID を判断します。