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/ 中。似乎当它作为服务运行时,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”

以上是关于Jenkins / Vagrant / VirtualBox - Virtualbox 以系统用户身份运行?的主要内容,如果未能解决你的问题,请参考以下文章

用Vagrant创建Jenkins master-slave多机环境

如何拥有一个自己的Vagrant box

基于 Vagrant 和 Ansible 搭建持续交付平台

詹金斯从工件加载文件时出错

[部署开发环境][1 vagrant] vagrant部署开发环境--安装vagrant

vagrant拷贝后vagrant file需要加的配置