A.11. VDSM フックの実行
before_vm_start スクリプトは、libvirt に達する前に、ドメイン XML を編集して仮想マシンの VDSM の定義を変更することができます。これを実行する際には、注意を払う必要があります。フックスクリプトは、VDSM の操作を妨げる可能性があり、スクリプトにバグがある場合には、Red Hat Enterprise Virtualization 環境が停止してしまう可能性があります。特に、ドメインの UUID は決して変更しないでください。また、十分な予備知識なしには、ドメインからのデバイスの削除を試みないでください。
before_vdsm_start と after_vdsm_stop のフックスクリプトは、root ユーザーとして実行されます。システムへの root アクセスが必要なその他のフックスクリプトは、sudo コマンドを使用して権限のエスカレーションを行うように作成する必要があります。これをサポートするには、/etc/sudoers を更新して、vdsm ユーザーがパスワードを再入力せずに sudo を使用できるようにする必要があります。フックスクリプトは非対話的に実行されるため、このように設定しなければなりません。
例A.4 VDSM フックの sudo 設定
この例では、
vdsm ユーザーが root として /bin/chown コマンドを実行できるように sudo コマンドを設定します。
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 コマンドを使用して root として /bin/chown を実行することができるようになります。以下の Python コードは、sudo を使用して、/my_file ファイル上で root として /bin/chown を実行します。
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
フックスクリプトの標準エラーは VDSM のログに収集されます。この情報は、フックスクリプトのデバッグに使用されます。