Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

A.11. VDSM Hook 执行

before_vm_start 脚本可以编辑域 XML,以便在达到 libvirt 之前更改虚拟机的 VDSM 定义。要这样做,必须谨慎操作。钩子脚本可能会破坏 VDSM 的操作,而 buggy 脚本可能会导致 Red Hat Virtualization 环境中断。特别是,请确保您永远不会更改域的 UUID,且不尝试在没有足够背景知识的情况下尝试从域中删除设备。
before_vdsm_startafter_vdsm_stop hook 脚本都以 root 用户身份运行。需要系统 root 访问权限的其他钩子脚本必须写为使用 sudo 命令进行特权升级。要支持此 /etc/sudoers,必须更新 /etc/sudoers,以允许 vdsm 用户在不重新输入密码的情况下使用 sudo。这是必要的,因为 hook 脚本是非交互方式执行的。

例 A.4. 为 VDSM Hook 配置 sudo

在本示例中,sudo 命令将配置为允许 vdsm 用户以 root 身份运行 /bin/chown 命令。
  1. root 用户身份登录虚拟化主机。
  2. 在文本编辑器中打开 /etc/sudoers 文件。
  3. 将此行添加到文件中:
    vdsm ALL=(ALL) NOPASSWD: /bin/chown
    这指定了 vdsm 用户能够以 root 用户身份运行 /bin/chown 命令。NOPASSWD 参数表示在调用 sudo 时,不提示用户输入密码。
完成此配置更改后,VDSM hook 能够使用 sudo 命令作为 root 运行 /bin/chown。此 Python 代码使用 sudo 在文件 /my_file 上以 root 用户身份执行 /bin/chown
retcode = subprocess.call( ["/usr/bin/sudo", "/bin/chown", "root", "/my_file"] )
在 VDSM 的日志中收集 hook 脚本的标准错误流。此信息用于调试 hook 脚本。