6.5. virt-who の設定
virt-who を設定するための環境変数の使用および sysconfig ファイルの使用は非推奨です。次のメジャーリリースでは、これらの使用は無視されます。
サポートされる virt-who 設定は、仮想化プラットフォームごとに異なります。
- Red Hat 製品用に virt-who を設定するには、Red Hat ハイパーバイザーでの virt-who のインストールおよび設定 を参照してください。
- VMware vCenter 用に virt-who を設定するには、virt-who で VMware vCenter に接続する設定 を参照してください。
- Microsoft Hyper-V 用に virt-who を設定するには、Microsoft Hyper-V に接続するための virt-who の設定 を参照してください。
- OpenShift Virtualization 用に virt-who を設定するには、OpenShift Virtualization に接続するための virt-who の設定 を参照してください。
6.5.1. Red Hat ハイパーバイザーでの virt-who のインストールおよび設定
以下の手順に従って、Red Hat Enterprise Linux Virtualization (KVM)、Red Hat Virtualization、Red Hat OpenStack Platform の各ハイパーバイザーに virt-who をインストールおよび設定します。
前提条件
- ハイパーバイザーを Red Hat Subscription Management に登録する。
-
Red Hat Virtualization Host (RHVH) を使用している場合は、virt-who の最小バージョンが利用可能になるように、これを最新バージョンに更新する。virt-who は RHVH でデフォルトで利用できますが、
rhel-7-server-rhvh-4-rpms
リポジトリーから個別に更新することはできません。
手順
ハイパーバイザーに virt-who をインストールします。
# yum install virt-who
必要に応じて、
/etc/virt-who.conf
ファイルを編集してグローバル設定を変更または追加します。virt-who はローカルにインストールされているため、この設定はこのハイパーバイザーにのみ適用されます。-
VIRTWHO_INTERVAL
の値を変更して、virt-who がハイパーバイザーをクエリーする頻度を分単位で指定します。仮想マシンには最長で 7 日間の一時的なサブスクリプションが付与されるため、頻繁な照会は必要なく、使用環境のサイズに適した間隔を選択できます。ほとんどの環境では、1 日 1 回 (1440
) が適しています。 virt-who 通信に HTTP プロキシーを使用する場合は、プロキシーを指定する行を追加します。
http_proxy=https://proxy.example.com:443
このサーバーからの virt-who 通信に HTTP プロキシーを使用しない場合は、以下の行を追加します。
NO_PROXY=*
注記NO_PROXY=*
は使用できますが、/etc/sysconfig/virt-who
でのみ使用できます。NO_PROXY
は、/etc/virt-who.conf
で有効な設定ではありません。
-
テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/local.conf
作成した設定ファイルを編集して、サンプルの値を、お使いの設定に固有の値に変更します。
[local] 1 type=libvirt 2 owner=1234567 3 hypervisor_id=hostname 4
- 1
- この設定ファイルは virt-who のこのインスタンスによって管理される唯一の設定ファイルであるため、一意となる必要はありません。
- 2
- この virt-who 接続が Red Hat ハイパーバイザーへの接続であることを指定します。
- 3
- ハイパーバイザーが属する組織。ハイパーバイザーで
subscription-manager orgs
を実行して組織を見つけることができます。 - 4
- ハイパーバイザーを特定する方法を指定します。
hostname
を使用して、サブスクリプション管理に意味のあるホスト名を指定します。ハイパーバイザーの名前が変更した場合は、uuid
を使用して重複を避けることができます。個別のハイパーバイザーにはhwuuid
を使用しないでください。
virt-who サービスを開始して有効にします。
# systemctl enable --now virt-who
ハイパーバイザーごとに、この手順を繰り返します。
6.5.2. virt-who で VMware vCenter に接続する設定
以下の手順を使用して、virt-who が VMware vCenter Server に接続するよう設定します。
前提条件
- vCenter Server で読み取り専用の virt-who ユーザーを作成している。この virt-who ユーザーには、最低でも vCenter Data Center のすべてのオブジェクトに対する読み取り専用アクセスが必要です。
- Red Hat Enterprise Linux サーバーで virt-who ホストを準備している。
手順
virt-who ホストで、
virt-who-password
ユーティリティーを使用して virt-who ユーザーのパスワードを暗号化します。# virt-who-password
プロンプトが表示されたら、virt-who ユーザーのパスワードを入力し、暗号化された形式のパスワードを書き留めます。
テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/vcenter1.conf
トラブルシューティング時に設定ファイルを簡単に特定できるようにするには、VMware vCenter ホスト名を新規ファイル名として使用します。この例では、ホスト名は vcenter1 です。
作成した設定ファイルを編集して、サンプルの値を、お使いの設定に固有の値に変更します。
[vcenter1] 1 type=esx 2 server=vcenter1.example.com 3 username=virt_who_user 4 encrypted_password=bd257f93d@482B76e6390cc54aec1a4d 5 owner=1234567 6 hypervisor_id=hostname 7 filter_hosts=esx1.example.com, esx2.example.com 8
- 1
- 名前は個別の設定ファイルごとに一意でなければなりません。vCenter Server のホスト名を使用して、各ハイパーバイザーの設定ファイルを簡単に特定できます。
- 2
- この virt-who 接続が VMware vCenter Server への接続であることを指定します。
- 3
- vCenter サーバーの FQDN。
- 4
- vCenter サーバーでの virt-who ユーザーの名前。
- 5
- virt-who ユーザーの暗号化されたパスワード。
- 6
- ハイパーバイザーが属する組織。ハイパーバイザーで
subscription-manager orgs
を実行して、組織を見つけることができます。 - 7
- ハイパーバイザーを特定する方法を指定します。
hostname
を使用して、サブスクリプション管理に意味のあるホスト名を指定します。ハイパーバイザーの名前が変更した場合は、uuid
またはhwuuid
を使用して重複を防ぐことができます。 - 8
- 一部のハイパーバイザーが Red Hat Enterprise Linux 仮想マシンを実行しない場合、そのハイパーバイザーが virt-who により報告される必要はありません。以下のオプションのいずれかを使用してハイパーバイザーにフィルターを設定できます。ワイルドカードと正規表現がサポートされます。名前に特殊文字が含まれている場合は、引用符で囲みます。
-
filter_hosts
またはexclude_hosts
: 指定したhypervisor_id
に従って、ハイパーバイザーのコンマ区切りリストを指定します。たとえば、ハイパーバイザーがホスト名で識別される場合は、そのハイパーバイザーをホスト名に含めるか、または除外する必要があります。 -
filter_host_parents
またはexclude_host_parents
: クラスターのコンマ区切りリストを指定します。フィルターが設定されたクラスターのハイパーバイザーは、virt-who によって報告されます。除外されたクラスターのハイパーバイザーは、virt-who によって報告されません。
-
virt-who サービスを再起動します。
# systemctl restart virt-who
各 vCenter Server について、この手順を繰り返します。
6.5.3. Microsoft Hyper-V に接続するための virt-who の設定
以下の手順を使用して、virt-who が Microsoft Hyper-V ハイパーバイザーに接続するように設定します。
前提条件
- Red Hat Enterprise Linux 9 以降である。
- Red Hat Enterprise Linux サーバーで virt-who ホストを準備している。
- ハイパーバイザーの基本的な認証モードが有効になっている。
- ハイパーバイザーでリモート管理が有効になっている。
- ハイパーバイザーに読み取り専用の virt-who ユーザーが作成されている。
手順
virt-who ホストで、
virt-who-password
ユーティリティーを使用して、ハイパーバイザーの virt-who ユーザーのパスワードを暗号化します。# virt-who-password
プロンプトが表示されたら、virt-who ユーザーのパスワードを入力し、暗号化された形式のパスワードを書き留めます。
テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/hyperv1.conf
トラブルシューティング時に設定ファイルを簡単に特定できるようにするには、ハイパーバイザーのホスト名を新規ファイル名として使用します。この例では、ホスト名は hyperv1 です。
作成した設定ファイルを編集して、サンプルの値を、お使いの設定に固有の値に変更します。
[hyperv1] 1 type=hyperv 2 server=hyperv1.example.com 3 username=virt_who_user 4 encrypted_password=bd257f93d@482B76e6390cc54aec1a4d 5 owner=1234567 6 hypervisor_id=hostname 7
- 1
- 名前は個別の設定ファイルごとに一意でなければなりません。ハイパーバイザーのホスト名を使用して、各ハイパーバイザーの設定ファイルを簡単に特定できます。
- 2
- この virt-who 接続が Microsoft Hyper-V ハイパーバイザーに属することを指定します。
- 3
- Hyper-V ハイパーバイザーの FQDN。
- 4
- ハイパーバイザーの virt-who ユーザーの名前。
- 5
- virt-who ユーザーの暗号化されたパスワード。
- 6
- このハイパーバイザーが属する組織。ハイパーバイザーで
subscription-manager orgs
を実行して組織を見つけることができます。 - 7
- ハイパーバイザーを特定する方法を指定します。
hostname
を使用して、サブスクリプション管理に意味のあるホスト名を指定します。ハイパーバイザーの名前が変更した場合は、uuid
を使用して重複を避けることができます。個別のハイパーバイザーにはhwuuid
を使用しないでください。
virt-who サービスを再起動します。
# systemctl restart virt-who
ハイパーバイザーごとに、この手順を繰り返します。
6.5.4. OpenShift Virtualization に接続するための virt-who の設定
サポート対象のプラットフォーム
virt-who による OpenShift Virtualization のサポート状況。
- virt-who-0.28.x-1.el7 (RHEL 7.9)
- virt-who-0.29.x-1.el8 (RHEL 8.3)
手順
サブスクライブするクラスターで、プロジェクトと virt-who という名前のサービスアカウントを作成します。
$ oc new-project virt-who $ oc create serviceaccount virt-who
ノードおよび仮想マシンインスタンスをリスト表示するためのクラスターロールを作成します。
$ oc create clusterrole lsnodes --verb=list --resource=nodes $ oc create clusterrole lsvmis --verb=list --resource=vmis
クラスターロールバインディングを作成します。
$ oc adm policy add-cluster-role-to-user lsnodes system:serviceaccount:virt-who:virt-who $ oc adm policy add-cluster-role-to-user lsvmis system:serviceaccount:virt-who:virt-who
virt-who システムアカウントに、実行中のすべての VM をリスト表示する権限があることを確認します。
$ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
ホスト (または OpenShift Virtualization で実行している仮想マシン) に virt-who をインストールします。
[virtwho-host]$ yum install virt-who
サブスクライブしているホストで、所有者番号を見つけます。
$ subscription-manager orgs
テンプレート設定ファイルを新規の個別の設定ファイルにコピーします。トラブルシューティングの際に設定ファイルを簡単に特定できるように、クラスター API のホスト名を使用します。この例では、ホスト名は
openshift-cluster-1
です。[virtwho-host]# cp /etc/virt-who.d/template.conf /etc/virt-who.d/openshift-cluster-1.conf [cnv] type=kubevirt kubeconfig=/root/.kube/config hypervisor_id=hostname owner=<owner_number>
virt-who サービスアカウントのトークンを取得します。
# oc serviceaccounts get-token virt-who
/usr/bin/oc
が利用できない場合は、/usr/bin/oc
をインストールし、トークンを使用してログインして有効な kubeconfig ファイルを作成します。url を指定して、クラスター api を指定する必要があります。以下に例を示します。[virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
kubeconfig ファイルで OpenShift Virtualization の certificate-authority (CA) 証明書を使用するには、クラスターから抽出してコントローラーデーモンとして virt-who を実行しているシステムのファイルに保存します。
oc get secret -n openshift-kube-apiserver-operator loadbalancer-serving-signer -o jsonpath='{.data.tls\.crt}' | base64 -d > $cluster-ca.pem
kubeconfig ファイルは、抽出した CA 証明書を含めるように変更します。以下に例を示します。
[virtwho-host]$ cat /root/.kube/config apiVersion: v1 clusters: - cluster: server: https://api.testcluster.example.org:6443 certificate-authority: /root/testcluster-ca.pem name: api-testcluster-example-org:6443 contexts: - context: cluster: api-test-cluster-example-org:6443 namespace: default
サービスを開始する前に、設定を手動でテストできます。
[virtwho-host]# virt-who --print
jq
プログラムがインストールされている場合は、# virt-who --print | jq
のように、そのプログラムを使用して出力を簡素化できます。
virt-who サービスを有効にします。
[virtwho-host]# systemctl enable virt-who
virt-who サービスを再起動して、新しい設定を使用します。
[virtwho-host]# systemctl restart virt-who
virt-who ログは、/var/log/rhsm/rhsm.log
にあります。このファイルで、設定または接続エラーを確認できます。