第5章 設定およびサービス

5.1. virt-who 設定ファイル

virt-who サービスには、少なくても以下の 2 つの設定ファイルが必要です。

  • ホストからの全 virt-who 接続に適用する設定が含まれるグローバル設定ファイル (/etc/sysconfig/virt-who)。
  • サブスクリプション管理を接続する各ハイパーバイザーまたは仮想化マネージャーの個別設定ファイル。これらは、/etc/virt-who.d/ ディレクトリーに保存する必要があります。
注記

仮想化マネージャーまたはハイパーバイザーを追加または削除する場合には、virt-who デーモンの設定を更新する必要があります。

以下は、virt-who で提供される個別の設定ファイル例の抜粋です。各接続の設定オプションは、stanza に含まれます。各設定 stanza のタイトルは一意にする必要があり、virt-who はそれ以外の要件を名前に課しません。個別の設定ファイルにはハイパーバイザーと同じ名前を指定することが推奨されますが、必須ではありません。

#[config name]
#type=               ; insert one of libvirt/esx/hyperv/rhevm/vdsm/fake
#server=             ; insert hostname or ip address of the server to connect to
#username=           ; username for server authentication
#password=           ; password for server authentication
#encrypted_password= ; password encrypted using virt-who-password utility
#owner=              ; owner for use with SAM, Customer Portal, or Satellite 6
#env=                ; environment for use with SAM, Customer Portal, or Satellite 6
#hypervisor_id=      ; how will be the hypervisor identified, one of: uuid, hostname, hwuuid
注記

グローバルの設定とハイパーバイザーの接続の設定ファイルは 1 つのファイル (/etc/sysconfig/virt-who) に統合することができ、サポートもされています。ただし、この方法は廃止予定となっています。グローバルの設定ファイルと個別の設定ファイルを分けた方がトラブルシューティングがしやすくなります。

5.1.1. virt-who アクセスの範囲の制限

Red Hat Enterprise Linux や他のオペレーティングシステムを実行する仮想マシンが含まれるハイブリッドの環境を稼働している場合には、virt-who のホストへのアクセス範囲を制限することができます。たとえば、ハイパーバイザーホストが Microsoft Windows Server インスタンスのみをホストする場合は、virt-who エージェントからレポートを受けるハイパーバイザーがあっても利点はありません。

virt-who のホスト (ハイパーバイザー) へのアクセスを制限するには、以下の方法のいずれかまたは両方を使用してください。どちらの方法も目的は同じですが、包含/除外の方法は virt-who のネイティブの機能であるため、デフォルトとみなされます。

  • 包含または除外するホストを表示します。
  • アクセスを、ホストのサブセットに制限します。

5.1.1.1. 包含または除外するホストの表示

virt-who デーモンからレポートを受けるホストを包含または除外するには、virt-who 設定ファイルに、コンマ区切りで追加します。ホストの名前に特殊文字が含まれる場合には、引用符で囲みます。ホストを 包含する には filter_hosts パラメーターを使用します。ホストを 除外する には exclude_hosts パラメーターを使用します。virt-who の各設定ファイルでは、いずれか の方法を使用できます。

包含または除外するホストを特定する方法は、Satellite Web UI で指定した特定方法と同じにする必要があります。hypervisor_id=hostname を指定した場合は、ホスト名を一覧に記載する必要があります。hypervisor_id=uuid または hypervisor_id=hwuuid を指定した場合には、順にホストの UUID または HWUUID を記載する必要があります。

注記

フィルタリングパラメーター filter_host_uuidsexclude_host_uuids は非推奨になりました。

virt-who からのホストの除外例

[vcenterhost1]
type=esx
server=vsphere.example.com
username=test
password=test
owner=Default_Organization
env=Library
hypervisor_id=hostname
exclude_hosts=host1.redhat.com,host2.redhat.com

5.1.1.2. 特定のホストへのアクセス制限

virt-who が使用するアカウントに、包含するホストに対する読み取り専用アクセスを設定します。ホストへのアクセス制限をすることで、virt-who デーモンはアクセス可能なホストのみを検索し、取得します。

5.1.2. 設定ソース

本ガイドでは、すべてのサンプルで設定ファイルを使用しますが、virt-who は設定を複数のソースから受け入れることができます。設定ソースの優先順は以下のようになります。virt-who 設定オプションの詳細情報は virt-who-config および virt-who の man ページを参照してください。

設定ファイルに実装する前に設定をテストする場合は、コマンドラインで設定オプションを指定すると便利です。ただし、このオプションは永続せず、virt-who サービスまたは Red Hat Enterprise Linux ホストを再起動すると無効になります。

  1. コマンドライン
  2. 環境変数
  3. /etc/sysconfig/virt-who ファイル
  4. /etc/virt-who.d/* ファイル
  5. /etc/virt-who.conf ファイル

5.2. virt-who ユーザーの作成

  1. Administrator アクセスのあるサブスクリプション管理ユーザーを作成します。

    このアカウントを使用すると、virt-who がサブスクリプション管理に接続できるようになります。Red Hat は、この目的の ためだけ にこのアカウントを使用することを推奨します。すでにこの目的のためにサブスクリプション管理ユーザーを作成している場合は、この手順を省略してください。

  2. ユーザーパスワードの暗号化

    virt-who アカウントパスワードを暗号化すると、プレーンテキストでパスワードを保存するよりも、セキュリティーが強化されます。暗号化キーは root アカウントしか読み取りができないファイルに記述するため、root アカウントのパスワードは暗号化する必要があります。このような理由から、root アカウントのみがパスワードを復号できます。

    1. virt-who-password ユーティリティーを実行します。

      # virt-who-password

      アカウントのパスワードを入力してハイパーバイザーに接続します。暗号化形式のパスワードが画面に出力されます。

      # virt-who-password
      Password: <virt who account's password>
      Use following as value for encrypted_password key in the configuration file:
      837a5d6a34203e805c998ce02bf84c03
    2. 暗号化されたパスワードをメモします。

これは、後で virt-who デーモンを設定する際に使用します。

5.3. virt-who が Red Hat Enterprise Virtualization Hypervisor に接続するように設定する手順

virt-who のこのインスタンスが接続する Red Hat Enterprise Virtualization Hypervisor (RHEV-H) ホストごとにこの手順を繰り返します。

  1. Red Hat Enterprise Virtualization Manager インスタンスに接続する際に使用するアカウントのパスワードを暗号化します。

    virt-who-password コマンドを使用してパスワードを暗号化します。サンプルについては「virt-who ユーザーの作成」を参照してください。

  2. テンプレート設定ファイルを新しいファイルにコピーします。

    virt-who ホスト上で以下を実行します。

    # cp /etc/virt-who.d/template.conf /etc/virt-who.d/rhevmhost1

    各ハイパーバイザーの設定ファイルを簡単に指定するには、RHEV-H ホスト名を新規ファイル名として使用します。この例のホスト名は rhevmhost1 です。

  3. 作成済みの設定ファイルを編集して、サンプルの値は、お使いの環境値に置き換えてください。

    [rhevmhost1]              1
    type=rhevm                2
    hypervisor_id=hostname    3
    owner=org_label           4
    env=Library               5
    server=https://rhevmhost1.example.com:443  6
    username=admin@internal   7
    encrypted_password=bd257f93d@482B76e6390cc54aec1a4d  8
    1
    これは、各 virt-who インスタンスごとに一意です。ハイパーバイザーごとの設定ファイルを指定しやすいように、Red Hat Enterprise Virtualization Manager ホストの名前を使用します。
    2
    type=rhevm は、virt-who の Red Hat Virtualization Manager への接続を指定します。
    3
    サブクスクリプション管理 Web UI で、ハイパーバイザーがホスト名で特定されることを指定します。デフォルトでは、ハイパーバイザーの UUID が使用されますが、UUID は (名前に比べ) 分かりやすさに欠けます。
    4
    組織のラベル
    5
    これにより、ホストが配置される環境を指定します。これは、Libraryなければなりません
    6
    Red Hat Enterprise Virtualization Manager の完全修飾ドメイン名または IP アドレス。デフォルトのポート番号は 8443 ですが、バージョン 3.0 以降では、Red Hat Enterprise Virtualization Manager はポート 443 を使用します。
    7
    virt-who が Red Hat Enterprise Virtualization Manager インスタンスに接続するアカウント名。username オプションでは、username@domain の形式で入力する必要があります。
    8
    username で指定したアカウントのパスワードを暗号化します。

5.4. virt-who が Red Hat Enterprise Linux ハイパーバイザーに接続するように設定する手順

Red Hat Enterprise Linux ハイパーバイザーごとにこの手順を完了してください。

virt-who が Red Hat Enterprise Linux ハイパーバイザーに接続するように設定する手順

  1. Red Hat Enterprise Linux ハイパーバイザーが Subscription Asset Manager インスタンスに登録されるように設定します。

    # yum install http://rhsm.example.com/pub/candlepin-cert-consumer.noarch.rpm
  2. Red Hat Enterprise Linux ハイパーバイザーを Subscription Asset Manager に登録します。

    # subscription-manager register --org="organizational_label"
  3. VDC サブスクリプションを Red Hat Enterprise Linux ハイパーバイザーに割り当てます。

    # subscription-manager attach --pool=subscription_pool_ID

    必要なサブスクリプションプール ID を検索するには、利用可能なサブスクリプションをすべて表示します。

    # subscription-manager list --available
  4. テンプレート設定ファイルを新しいファイルにコピーします。

    各ハイパーバイザーの設定ファイルを簡単に指定するには、ハイパーバイザーのホスト名を新規ファイル名として使用します。この例のホスト名は rhelhost1 です。

    cp /etc/virt-who.d/template.conf /etc/virt-who.d/rhelhost1
  5. 作成済みの設定ファイルを編集して、サンプルの値は、お使いの環境値に置き換えてください。

    [rhelhost1.example.com]         1
    type=vdsm                       2
    hypervisor_id=hostname          3
    1
    Red Hat Enterprise Linux ハイパーバイザーの完全修飾ドメイン名
    2
    type=vdsm パラメーターは、この virt-who が Red Hat Enterprise Linux ハイパーバイザーに接続するように指定します。
    3
    サブクスクリプション管理 Web UI で、ハイパーバイザーがホスト名で特定されることを指定します。デフォルトでは、ハイパーバイザーの UUID が使用されますが、UUID は (名前に比べ) 分かりやすさに欠けます。

これで、Red Hat Enterprise Linux ハイパーバイザーインスタンスに必要な設定が完了しました。

ゲスト仮想マシンの登録

Red Hat Enterprise Linux ハイパーバイザーでホストされるゲスト仮想マシンを登録する場合には、ハイパーバイザーに割り当てられているサブスクリプションを使用することが重要です。

  1. 仮想マシンが Subscription Asset Manager に登録されるように設定します。

    # yum install http://_rhsm.example.com_/pub/candlepin-cert-consumer.noarch.rpm
  2. 仮想マシンを登録します。

    # subscription-manager register --org="organization_label"
  3. サブスクリプションを取得します。

    # subscription-manager attach --pool=subscription_pool_ID

    サブスクリプションプールがハイパーバイザーに使用したものと同じことを確認します。仮想マシンは、Subscription Asset Manager からサブスクリプションを取得します。このプロセスの詳細は「仮想マシンのサブスクリプションプロセス」を参照してください。

5.5. virt-who が VMware vCenter に接続するように設定する手順

virt-who のこのインスタンスが接続する VMware vCenter ホストごとにこの手順を繰り返します。

  1. Red Hat Enterprise Virtualization Manager インスタンスに接続する際に使用するアカウントのパスワードを暗号化します。

    virt-who-password コマンドを使用してパスワードを暗号化します。サンプルについては「virt-who ユーザーの作成」を参照してください。

  2. テンプレート設定ファイルを新しいファイルにコピーします。

    各ハイパーバイザーの設定ファイルを簡単に指定するには、VMware vCenter のホスト名を新規ファイル名として使用します。この例のホスト名は vcenterhost1 です。

    # cp /etc/virt-who.d/template.conf /etc/virt-who.d/vcenterhost1
  3. 作成済みの設定ファイルを編集して、サンプルの値は、お使いの環境値に置き換えてください。

    [vcenterhost1]          1
    type=esx                2
    hypervisor_id=hostname  3
    owner=org_label            4
    env=Library             5
    server=vcenterhost1.example.com  6
    username=corporate\svc-virt-who 7
    encrypted_password=bd257f93d@482B76e6390cc54aec1a4d  8
    1
    これは、各 virt-who インスタンスごとに一意です。VMware vCenter ごとの設定ファイルを指定やすいように、Red Hat Enterprise Virtualization Manager ホストの名前を使用します。
    2
    type=esx パラメーターは、この virt-who が VMware vCenter に接続するように指定します。
    3
    サブクスクリプション管理 Web UI で、ハイパーバイザーがホスト名で特定されることを指定します。デフォルトでは、ハイパーバイザーの UUID が使用されますが、UUID は (名前に比べ) 分かりやすさに欠けます。
    4
    組織のラベル
    5
    これにより、ホストが配置される環境を指定します。これは、Libraryなければなりません
    6
    VMware vCenter サーバーの完全修飾ホスト名または IP アドレス
    7
    virt-who がハイパーバイザーに接続するアカウント名 (domain_name\account_name 形式)。domain_nameaccount_name の値は、バックスラッシュを 1 つ使用して分割します。ドメインアカウントとグローバルの設定ファイル /etc/sysconfig/virt-who を使用する場合に必要なバックスラッシュの数は 2 つ です。詳細は、Red Hat ナレッジソリューションの「virt-who で Windows ドメインアカウントを使用する」を参照してください。
    8
    username で指定したアカウントのパスワードを暗号化します。

5.6. virt-who が Microsoft Hyper-V に接続するように設定する手順

注記

virt-who デーモンでは、現在、Microsoft System Center 2012 R2 Virtual Machine Manager (SCVMM) ではサポートされません。virt-who が接続する各 Microsoft Hyper-V ホストにそれぞれ virt-who の設定ファイルが必要です。

virt-who のこのインスタンスが接続する各 Microsoft Hyper-V ホストでこの手順を繰り返します。

  1. Windows Remote Management を有効にして、HTTP または HTTPS リスナーが実行中である必要があります。

    Microsoft Hyper-V サーバーで以下を実行します。

    # winrm quickconfig
  2. Microsoft Hyper-V サーバーでリモート管理を有効にします

    Microsoft Hyper-V サーバーで以下を実行します。

    # netsh advfirewall firewall set rule group="Remote Administration" new enable=yes
  3. HTTP を使用する場合は、暗号化のない接続を有効にします。

    Microsoft Hyper-V サーバーで以下を実行します。

    # winrm set winrm/config/service @{AllowUnencrypted="true"}
  4. Microsoft Hyper-V サーバーで設定された認証方法が Basic か NTLM を確認します。

    Microsoft Hyper-V サーバーで以下を実行します。

    # winrm get winrm/config/service/auth
  5. Microsoft Hyper-V サーバーに接続する際に使用するアカウントのパスワードを暗号化します。

    virt-who-password コマンドを使用してパスワードを暗号化します。サンプルについては「virt-who ユーザーの作成」を参照してください。

  6. テンプレート設定ファイルを新しいファイルにコピーします。

    各ハイパーバイザーの設定ファイルを簡単に指定するには、Microsoft Hyper-V サーバーのホスト名を新規ファイル名として使用します。この例のホスト名は hypervhost1 です。

  7. 作成済みの設定ファイルを編集して、サンプルの値は、お使いの環境値に置き換えてください。

    [hypervhost1]                   1
    type=hyperv                     2
    hypervisor_id=hostname          3
    owner=org_label                 4
    env=Library                     5
    server=hypervhost1.example.com  6
    username=administrator          7
    encrypted_password=bd257f93d@482B76e6390cc54aec1a4d  8
    1
    これは、各 virt-who インスタンスごとに一意です。ハイパーバイザーごとの設定ファイルを指定しやすいように、Microsoft Hyper-V ホストの名前を使用します。
    2
    type=hyperv は、virt-who の Microsoft Hyper-V ホストへの接続を指定します。
    3
    サブクスクリプション管理 Web UI で、ハイパーバイザーがホスト名で特定されることを指定します。デフォルトでは、ハイパーバイザーの UUID が使用されますが、UUID は (名前に比べ) 分かりやすさに欠けます。
    4
    組織のラベル
    5
    これにより、ホストが配置される環境を指定します。これは、Libraryなければなりません
    6
    Microsoft Hyper-V サーバーの完全修飾ホスト名または IP アドレス
    7
    virt-who がハイパーバイザーに接続するアカウント名。デフォルトは Administrator です。別のアカウントを使用するには、ユーザーアカウントを作成して、そのアカウントを Hyper-V Administrators と Remote Management Users のグループ (Windows 2012 Server) に割り当てます。
    8
    username で指定したアカウントのパスワードを暗号化します。

5.7. virt-who サービスの設定および起動

  1. サブスクリプション管理に virt-who サービスを設定します。

    グローバルの /etc/sysconfig/virt-who 設定ファイルを編集して、以下のようにパラメーターを設定します。これにより、virt-who がサブスクリプション管理ホストと通信することを指定します。

    VIRTWHO_SAM=1
    警告

    デフォルトでは、virt-who は 1 時間ごとに開始されます。間隔は、VIRTWHO_INTERVAL のグローバル設定パラメーターで定義され、秒単位で測定されます。この値は、Red Hat サポートのアドバイスがない限り、変更しないようにしてください

  2. virt-who とゲスト仮想マシンの間の HTTP プロキシーを許可します。

    virt-who が実行中のサーバーとハイパーバイザーまたは仮想化マネージャーの間に HTTP プロキシーがある場合には、グローバルの /etc/sysconfig/virt-who 設定ファイルを編集して、以下のようにパラメーターを設定します。

    http_proxy=http://proxy-ip-or-hostname:port-number
  3. virt-who 設定を確認します。

    virt-who --one-shot コマンドを実行すると、全設定ファイルを読み込み、全ソースから仮想マシン一覧を取得し、すぐに終了します。このように、設定ファイル、認証情報、設定済み仮想化プラットフォームへの接続性をテストします。

    # virt-who --one-shot

    ハイパーバイザーとホストされているゲスト仮想マシンの一覧が JSON 形式で出力されます。以下は、VMware vSphere インスタンスからの virt-who の出力の抜粋です。ハイパーバイザーからの出力はすべて、以下のような構成になっています。

    {
        "guestId": "422f24ed-71f1-8ddf-de53-86da7900df12",
        "state": 5,
        "attributes": {
            "active": 0,
            "virtWhoType": "esx",
            "hypervisorType": "vmware"
        }
    },
  4. virt-who サービスを起動して有効化します。

    Red Hat Enterprise Linux 7 の場合:

    # systemctl start virt-who.service
    # systemctl enable virt-who.service

    Red Hat Enterprise Linux 6 の場合:

    # service virt-who start
    # chkconfig virt-who on
  5. virt-who サービスが正常に開始されたことを確認します。

    Red Hat Enterprise Linux 7 の場合:

    # systemctl status virt-who.service

    このコマンドからの出力は、以下のようになります。virt-who.service; enabled の出力でこのサービスが有効であることが確認でき、Active: active (running) でこのサービスが起動していることを確認できます。

    ● virt-who.service - Daemon for reporting virtual guest IDs to subscription-manager
       Loaded: loaded (/usr/lib/systemd/system/virt-who.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2016-03-11 14:59:05 AEST; 47s ago

    Red Hat Enterprise Linux 6 の場合:

    # service virt-who status

    このコマンドからの出力は、以下のようになります。

    virt-who (pid  7474) is running...

5.7.1. virt-who サービスの再起動

1 つまたは複数の virt-who 設定ファイルを変更した場合、またはサブスクリプション管理の設定環境を変更した場合は、virt-who サービスを再起動して変更を適用してください。たとえば、virt-who アカウントのパスワードを変更したり、ハイパーバイザーを新規組織に移動した場合は virt-who を再起動する必要があります。

Red Hat Enterprise Linux 7 の場合:

# systemctl restart virt-who.service

Red Hat Enterprise Linux 6 の場合:

# service virt-who restart