【问题标题】:Jenkins / Vagrant / VirtualBox - Virtualbox is running as the system user?Jenkins / Vagrant / VirtualBox - Virtualbox 以系统用户身份运行?
【发布时间】:2014-10-09 22:41:55
【问题描述】:

我对 VirtualBox 和 Vagrant 都很陌生,但不是 Jenkins。我有一个 Jenkins 版本正在运行在特定目录中“vagrant up”的 Windows 从属服务器上运行。虚拟机出现问题-我去了那个目录并尝试手动运行 vagrant up,它开始重新克隆盒子。调查中,VirtualBox VMs 文件夹存储在 /Windows/system32 中……我看过了,Jenkins 进程和 VirtualBox 进程肯定是作为运行 jenkins slave 的用户帐户运行的。如果我登录该帐户并启动 virtualbox,它会在帐户主目录中查找虚拟机!

我可以通过将两个帐户都指向第三个位置来解决此问题,但我想了解为什么会发生这种情况。有接盘侠吗?

【问题讨论】:

    标签: windows jenkins vagrant virtualbox


    【解决方案1】:

    根据docs,从VirtualBox 4.0开始,虚拟机的默认保存位置是当前系统用户的主目录。所以:

    1. C:\Documents and Settings\<username> 在 Windows 上
    2. /Users/<username> 在 Mac OS X 上
    3. /home/<username> 在 Linux 和 Solaris 上

    看看你的Windows slave上virtualbox的Default Machine Folder设置,看看有没有人修改了/Windows/System32的路径

    File > Preferences > General > Default Machine Folder
    

    另外,我假设您正在使用 jenkins vagrant plugin 来生成您的 vagrant box? (如果没有,你应该)。 AFAIK,该插件不需要从机上的任何系统管理员权限。

    【讨论】:

    • Jenkins 的 vagrant 插件不支持 jenkins 或 vagrant 的最新版本,也不支持从机。当我以服务帐户登录并运行 Virtualbox 时,它会将机器存储在 C:/Users/ 中。似乎当它作为服务运行时,virtualbox 认为它是以系统而不是用户身份登录的,但我从未有任何其他应用程序以这种方式运行。
    • 您使用什么命令将 vb 作为服务运行? VBoxHeadless.exe -s {vm_name} -v onVBoxManage.exe" startvm {uuid} --type headless 之类的东西?
    • 这是个好问题——我不是。我将 Jenkins 作为服务运行,它执行 Vagrant,它执行 virtualbox。我将不得不做一些研究,看看 vagrant 使用什么命令......
    • 所以如果你没有使用 jenkins vagrant 插件,那么在构建作业的Configure 部分下肯定有一些自制脚本,它会在从属框中触发vagrant up
    • 不,它在“构建”部分中作为 shell 脚本执行。比如“cd 文件夹;vagrant up;vagrant ssh -c myscript”
    猜你喜欢
    • 2012-05-21
    • 2015-06-14
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    相关资源
    最近更新 更多