Jenkins / Vagrant / VirtualBox - Virtualbox 以系统用户身份运行?
Posted
技术标签:
【中文标题】Jenkins / Vagrant / VirtualBox - Virtualbox 以系统用户身份运行?【英文标题】:Jenkins / Vagrant / VirtualBox - Virtualbox is running as the system user? 【发布时间】:2014-10-09 22:41:55 【问题描述】:我对 VirtualBox 和 Vagrant 都很陌生,但不是 Jenkins。我有一个 Jenkins 版本正在运行在特定目录中“vagrant up”的 Windows 从属服务器上运行。虚拟机出现问题-我去了那个目录并尝试手动运行 vagrant up,它开始重新克隆盒子。调查中,VirtualBox VMs 文件夹存储在 /Windows/system32 中……我看过了,Jenkins 进程和 VirtualBox 进程肯定是作为运行 jenkins slave 的用户帐户运行的。如果我登录该帐户并启动 virtualbox,它会在帐户主目录中查找虚拟机!
我可以通过将两个帐户都指向第三个位置来解决此问题,但我想了解为什么会发生这种情况。有接盘侠吗?
【问题讨论】:
【参考方案1】:根据docs,从VirtualBox 4.0开始,虚拟机的默认保存位置是当前系统用户的主目录。所以:
C:\Documents and Settings\<username>
在 Windows 上
/Users/<username>
在 Mac OS X 上
/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/VBoxHeadless.exe -s vm_name -v on
或 VBoxManage.exe" startvm uuid --type headless
之类的东西?
这是个好问题——我不是。我将 Jenkins 作为服务运行,它执行 Vagrant,它执行 virtualbox。我将不得不做一些研究,看看 vagrant 使用什么命令......
所以如果你没有使用 jenkins vagrant 插件,那么在构建作业的Configure
部分下肯定有一些自制脚本,它会在从属框中触发vagrant up
。
不,它在“构建”部分中作为 shell 脚本执行。比如“cd 文件夹;vagrant up;vagrant ssh -c myscript”以上是关于Jenkins / Vagrant / VirtualBox - Virtualbox 以系统用户身份运行?的主要内容,如果未能解决你的问题,请参考以下文章
用Vagrant创建Jenkins master-slave多机环境