第6章 CDK に関連する問題のトラブルシューティング

6.1. CDK に関連する問題のトラブルシューティング

全般的な Red Hat CDK の問題、またはとくに Vagrant 関連の問題がある場合は、本章の該当する情報を参照してください。

6.1.1. 全般的な CDK の問題のトラブルシューティング

問:

Vagrant を開始する方法は?

答:

Vagrant はコマンドラインベースのツールです。メニューエントリーはありません。Vagrant を実行するには、マシン上でコマンドプロンプトまたはターミナルセッションを起動します。Vagrant は自動的にパスに追加されるため、vagrant と入力することのみが必要になります。

問:

vagrant up の実行時に障害が発生したか、または SSH コマンドの失敗が報告されました。vagrant up を再度実行すると、VM がすでに実行中であるというメッセージが表示されます。

答:

Vagrant が仮想マシンを起動する場合に実行されるプロビジョニングには多数のステップがあります。これらには、Red Hat 用の Vagrant Registration プラグインなどのプラグインに関連するステップや、起動時に box をプロビジョニングするために Vagrantfile に組み込まれるステップが含まれます。Vagrant は SSH を使用してこれらのコマンドを実行します。

多くの場合、プロビジョニングステップ時のエラーは致命的ではなく、Vagrant box は依然として実行中になります。vagrant status コマンドを使用して box の状態を確認します。vagrant halt コマンドを使用すると Vagrant box を停止できます。マシンが実行中の場合、vagrant ssh コマンドを使用してこれにログインでき、VM を調べて問題の原因を確認することができます。

box が実行されている間に、vagrant provision コマンドを実行してプロビジョニングステップを再度実行します。

Vagrant ファイルが置かれているのと同じディレクトリーにいる必要があることに注意してください。Vagrantfile の場所が分からなくなった場合は、vagrant global-status コマンドを使用して起動した box と Vagrantfile と状態が保存されているディレクトリーを一覧表示します。

問:

Red Hat 登録が失敗したか、正しくないユーザー名とパスワードを入力しました。どのように box を手動で登録し、サブスクリプションの状態を確認できますか?

答:

subscription-manager ツールを使用すると、その他の Red Hat Enterprise Linux インストールの場合と同様に、ログインや、box の登録または登録解除、サブスクリプションのステータス確認、または利用可能なソフトウェアリポジトリーの有効化を実行できます。ただし、Red Hat Enterprise Linux Vagrant box の root パスワードは配布されないため、sudo -i コマンドを使用して root に切り換える必要があります。sudo ユーティリティーは vagrant ユーザーがすべてのコマンドを実行できるようにセットアップされています。

詳細情報は、Red Hat Subscription Management を参照してください。

問:

Vagrant box が使用する Red Hat サブスクリプションをリリースする方法は?

答:

Vagrant Registration プラグインは、vagrant halt または vagrant destroy コマンドを使用して box をシャットダウンする場合に box を Red Hat サブスクリプションから自動的に切り離します。box が Vagrant によってシャットダウンされない場合には、これは生じません。box が依然としてセットアップされた状態の場合は、vagrant up コマンドを使用して box を再び立ち上げ、vagrant halt または vagrant destroy を使用してこれを正常にシャットダウンできます。これにより、box の Red Hat subscription management からの登録解除が行われます。

または、Red Hat カスタマーポータル で subscription management を使用し、すでに使用されていない仮想システムを見つけ、これを削除します。

問:

Vagrant box 上で root として変更を行う必要がありますが、root パスワードは何ですか?

答:

sudo ユーティリティーは、vagrant ユーザーが root としてコマンドを実行できるようにセットアップされています。sudo コマンドを使用して root として単一コマンドを実行するか、または sudo -i を使用してインタラクティブな root シェルを起動できます。

問:

vagrant global-status を実行すると、permission denied のエラーが出されます。

答:

id コマンドを実行して、通常のユーザー ID が vagrant グループのメンバーであるかどうかを確認します。このステップをこれまで省略していた場合は、ログアウトしてから再びログインして変更が有効になるようにします。ユーザーの vagrant グループへの追加は、root 以外のユーザーが libvirt を使用できるように root で実行した各種ステップの実行時に追加された PolicyKit ルールで機能します。

6.2. CDK に関する問題のトラブルシューティング

問:

Vagrant の実行を試行する際に、libvirt への接続についてのエラーメッセージが出されます。root で Vagrant を実行する必要はありますか?

答:

ソフトウェアのインストールおよび設定手順のいずれかで、PolicyKit ルールを /etc/polkit-1/rules.d/ ディレクトリーにインストールします。これにより、root 以外のユーザーは、そのユーザーがグループ vagrant グループのメンバーである限り、Vagrant を実行したり、通常は root ユーザーに制限されている libvirt 操作を実行したりすることができるようになります。エラーメッセージは以下のようになります。

Error while connecting to libvirt: Error making a connection to libvirt URI qemu:///system:
Call to virConnectOpen failed: authentication failed: no agent is available to authenticate

これを解決するには、ユーザー ID が vagrant グループのメンバーであることを確認します。これは、id コマンドを実行して確認できます。上記のインストールステップを確認し、PolicyKit ルールが /etc/polkit-1/rules.d/ にインストールされていることを確認します。変更を有効にするには、PolicyKit および libvirtd サービスを再起動します。

# systemctl restart libvirtd
# systemctl restart polkit
問:

vagrant コマンドは、libvirt が作成しようとしているリソースがすでに存在していることを示しているために失敗します。

答:

通常、Vagrant は必要に応じてリソースの作成や破棄を行うことにより、libvirt とのすべての対話を管理します。vagrant destroy を実行すると、環境に割り当てられたすべてのリソースが解放されます。ただし、Vagrant の状態ディレクトリーの .vagrant がクリーンアップされる前に削除されるか、または Vagrant 操作が中断される場合に、libvirt リソースは vagrant destroy で削除できない状態で残される可能性があります。これが生じる場合は、クリーンアップにはコマンドラインユーティリティーのvirsh またはグラフィカルツールの virt-manager を使用する必要があります。

注意: システム上のすべての libvirt リソースを確認するには、これらのツールを root で実行する必要があります。これらを root で実行しない場合、リソースが割り当てられていないように表示されます。

6.3. Windows システムの CDK のトラブルシューティング

問:

vagrant ssh コマンドが機能しておらず、ssh.exe を見つけることができません。

答:

Windows システムで vagrant ssh を使用するには、パスに ssh.exe を組み込む必要があります。Cygwin をインストールし、ssh.exe がインストールされており、パスにあることを確認します。

問:

rsync がパスにないため、vagrant up コマンドは実行を拒否しています。

答:

rsync が明示的に選択されたか、またはこれが最後に選択可能なオプションであったために Windows 上の Vagrant の同期フォルダーで使用されている場合、Vagrant は rsync.exe がパスで利用可能でない場合には Vagrant box を起動しません。Cygwin をインストールし、rsync.exe がパスにあることを確認することをお勧めします。

問:

rsync がパスにないため、vagrant up コマンドが起動を突然拒否しました。このコマンドは rsync.exe が利用可能になる前は機能していました。

答:

Vagrant box が VirtualBox Guest Addition で設定されていない場合、Vagrant は共有フォルダーに rsync を使用することを試みます。rsync が見つからない場合、Vagrant はエラーを生成し、起動しません。

新規カーネルがインストールされている場合、VirtualBox Guest Additions を Vagrant box に再構築する必要がある場合があります。これは、以下で実行できます。

/etc/init.d/vboxdrv reload
問:

vagrant up の実行時に障害が発生したか、または SSH コマンドの失敗が報告されました。vagrant up を再度実行すると、VM がすでに実行中であるというメッセージが表示されます。

答:

Vagrant が仮想マシンを起動する場合に実行されるプロビジョニングには多数のステップがあります。これらには、Red Hat 用の Vagrant Registration プラグインなどのプラグインに関連するステップや、起動時に box をプロビジョニングするために Vagrantfile に組み込まれるステップが含まれます。Vagrant は SSH を使用してこれらのコマンドを実行します。

多くの場合、プロビジョニングステップ時のエラーは致命的ではなく、Vagrant box は依然として実行中になります。vagrant status コマンドを使用して box の状態を確認します。vagrant halt コマンドを使用すると Vagrant box を停止できます。マシンが実行中の場合、vagrant ssh コマンドを使用してこれにログインでき、VM を調べて問題の原因を確認することができます。

box が実行されている間に、vagrant provision コマンドを実行してプロビジョンステップを再度実行できます。

Vagrant ファイルが置かれているのと同じディレクトリーにいる必要があることに注意してください。Vagrantfile の場所が分からなくなった場合は、vagrant global-status コマンドを使用して起動したいずれかの box と Vagrantfile および状態が保存されているディレクトリーを一覧表示します。