A.11. VDSM フックの実行
before_vm_start スクリプトは、ドメイン XML を編集して、仮想マシンが libvirt に到達する前に仮想マシンの VDSM の定義を変更できます。その際には注意が必要です。フックスクリプトは VDSM の動作を混乱させる可能性があり、バグのあるスクリプトは Red Hat Virtualization 環境の停止につながる可能性があります。特に、ドメインの UUID を変更しないようにし、十分な背景知識がない限り、ドメインからデバイスを削除しようとしないでください。
before_vdsm_start と after_vdsm_stop の両方のフックスクリプトが root ユーザーとして実行されます。システムへの root アクセスを必要とするその他のフックスクリプトは、特権の昇格に sudo コマンドを使用して記述する必要があります。これをサポートするには、/etc/sudoers を更新して、vdsm ユーザーがパスワードを再入力せずに sudo を使用できるようにする必要があります。これは、フックスクリプトが非対話的に実行されるために必要です。
例A.4 VDSM フックの sudo の設定
この例では、sudo コマンドは、
vdsm ユーザーが root として /bin/chown コマンドを実行できるように設定されます。
rootとして仮想化ホストにログインします。- テキストエディターで
/etc/sudoersファイルを開きます。 - 次の行をファイルに追加します。
vdsm ALL=(ALL) NOPASSWD: /bin/chown
vdsm ALL=(ALL) NOPASSWD: /bin/chownCopy to Clipboard Copied! Toggle word wrap Toggle overflow これは、vdsmユーザーがrootユーザーとして /bin/chown コマンドを実行することができることを指定します。NOPASSWDパラメーターは、sudo を呼び出すときにユーザーがパスワードの入力を要求されないことを示しています。
この設定変更により、VDSM フックは sudo コマンドを使用して /bin/chown を
root として実行できるようになりました。この Python コードは、sudo を使用して、ファイル /my_file で /bin/chown を root として実行します。
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
フックスクリプトの標準エラーストリームは、VDSM のログに収集されます。この情報は、フックスクリプトをデバッグするのに使用されます。