非常感谢您能帮助我在 Windows 11 上使用 Vagrant 和 Ansible 启动和配置由 Hyper-V 管理的虚拟服务器。目前,我在 Windows 11 和 WSL2 (Ubuntu) 上都安装了最新版本的 Vagrant (2.4.0)。Ansible 安装在 WSL2 中的 Ubuntu 上。
我的假设是在 Ubuntu 中运行 Vagrant 和 Ansible。我尝试运行流浪起来但发现我必须以管理员身份运行sudo vagrant up。我在 Ubuntu 中运行时目前收到此错误消息:
Vagrant 在很早的阶段就初始化失败:
在 PATH 变量中未找到 Vagrant 尝试运行的可执行文件“cmd.exe”。这是一个错误。请验证此软件是否已安装并位于路径上。
在阅读了大量博客文章和 Vagrant 文档文件后,我修改了我的 ~/.zshrc 文件以包含:
export PATH=$PATH:/mnt/c/windows/system32
export PATH=$PATH:/mnt/c/ProgramData/Microsoft/Windows/Hyper-V
export PATH=$PATH:/mnt/c/Windows/System32/WindowsPowerShell/v1.0
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/Users/<my username>/"
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
export VAGRANT_DEFAULT_PROVIDER=hyperv
我还验证了 Ubuntu是在 Ubuntu 而不是 Windows 中运行 vagrant 安装哪个流浪汉返回:/usr/bin/vagrant。
如果我输入命令执行程序在 Ubuntu 中,它确实执行 Windows 命令 shell。我假设问题仍然出在 vagrant 的访问权限上。
答案1
发现这些改变对于解决这个错误是必要的。
- 跑步Windows 终端以管理员身份运行。我刚刚正常打开了 Windows 终端,然后假设如果我运行sudo vagrant up没关系——不,不是这样的。必须右键单击Windows 终端,选择“以管理员身份运行”。
- 环境变量VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH已正确设置,但我需要将我的 Vagrant 目录之内该层次结构。即 Vagrantfile 等。然后从该目录(在 Window 中)运行 vagrant 命令,但通过 WSL2 在 Ubuntu 中运行。
- 不要使用sudo vagrant up- 当我以该身份运行时,我得到了这个问题中最初提到的错误。但是,由于我以管理员身份运行 Windows Terminal,因此只需执行流浪起来。