A.11. 使用 VDSM hook
为了改变一个虚拟机的 VDSM 定义,
before_vm_start
脚本可以在 libvirt 前修改 domain XML。如需这样做,您需要非常的小心。hook 脚本可能会影响到 VDSM 的正常运行,一个有 bug 的脚本可能会导致整个 Red Hat Virtualization 环境出现故障。特别需要注意的是,永远不要更改域的 UUID;在没有足够背景知识的情况下不要试图从域中删除一个设备。
before_vdsm_start
和 after_vdsm_stop
hook 脚本都是以 root
用户执行的。如果其它的 hook 脚本需要系统的 root
权限,您需要使用 sudo
命令来升级权限。因为 hook 脚本是以非交互的形式被运行的,您必须配置您的 /etc/sudoers
来允许 vdsm
用户在不需要重新输入密码的情况下使用 sudo
。
例 A.4. 为 VDSM hook 配置 sudo
在这个实例中,
sudo
命令被配置为允许 vdsm
用户以 root
的身份运行 /bin/chown
命令。
- 使用
root
用户登录到虚拟主机。 - 在文本编辑器中打开
/etc/sudoers
。 - 把以下行添加到文件中:
vdsm ALL=(ALL) NOPASSWD: /bin/chown
它设定了vdsm
用户可以以root
用户的身份运行/bin/chown
命令。NOPASSWD
参数指定了在调用sudo
时,用户不会被提示输入密码。
在进行完这个配置后,VDSM hook 就可以使用
sudo
命令来以 root
用户的身份运行 /bin/chown
。以下的这段 Python 代码在 /my_file
文件中使用 sudo
来以 root
用户的身份执行 /bin/chown
。
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
hook 脚本的标准错误输出会被保存在 VDSM 的日志文件中。这些信息可以被用来进行故障排除。