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

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

cloud-init および userdata テンプレートを使用して、VMware 仮想マシンをプロビジョニングするには、「プロビジョニングでの VMware vSphere cloud-init と userdata テンプレートの使用」を参照してください。

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

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

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

    VMware テンプレートとオペレーティングシステムを関連付ける方法は、「オペレーティングシステムの作成」を参照してください。

    オペレーティングシステムとこのテンプレートを関連付ける方法は、「オペレーティングシステムの作成」を参照してください。

  • ホスト登録用のアクティベーションキー。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの作成」を参照してください。

ホストグループを作成して、ホスト作成用の情報を入力する時間を削減するには、『ホストの管理』ガイドの「ホストのグループの作成」を参照してください。

9.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) (プロビジョニング (すべて))

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

CLI をご利用の場合

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

# 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"

9.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/RHEL7" \
--compute-resource "My_vSphere"

9.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 をご利用の場合

コンピュートプロファイルの CLI コマンドは、Red Hat Satellite 6.6 ではまだ実装されていません。代わりに、ホストの作成プロセスで同じ設定を直接組み込むことができます。

9.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"
注記

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、「付録B Hammer CLI の追加のホストパラメーター」を参照してください。

CLI をご利用の場合

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

# hammer host create --name "vmware-test2" --organization "My_Organization" \
--location "New York" --hostgroup "Base" \
--compute-resource "My_vSphere" --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"

このコンピュートリソースに対する他のホスト作成パラメーターの情報は、「付録B Hammer CLI の追加のホストパラメーター」を参照してください。

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

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

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

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

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

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

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

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

ポートとファイアウォールの要件に関する詳細は、『オンラインネットワークからの Satellite Server のインストール』の「ポートとファイアウォールの要件」および『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 へのコールバックを行えるように、仮想マシンを設定する必要があります。セキュリティー上、全通信で HTTPS を使用するために Satellite X509 証明書を追加する必要があります。プロビジョニングに使用するイメージに必要のない情報が転送されないように、以下の手順には、仮想マシンの消去の手順が含まれています。

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 から katello-server-ca.crt ファイルをダウンロードします。

    # wget http://satellite.example.com/pub/katello-server-ca.crt
  6. katello-server-ca.crt ファイルを /etc/pki/ca-trust/source/anchors/ ディレクトリーに移動します。

    # mv katello-server-ca.crt /etc/pki/ca-trust/source/anchors/katello-server-ca.crt
  7. 証明書の記録を更新するには、次のコマンドを入力します。

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

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

    # 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
  10. udev ハードウェアルールを削除します。

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

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

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

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

    # rm -rf ~root/.ssh/known_hosts

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

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

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

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

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

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

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

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

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

手順

  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 を判断します。