Windows系统下用Molecule与Vagrant本地测试Ansible Role的方案
在Windows上用Molecule + Vagrant测试Ansible Role的最佳方案
最佳方式是通过**WSL2(Windows Subsystem for Linux)**搭建Linux环境,在WSL内部部署Molecule、Vagrant及依赖,同时对接Windows端的虚拟化后端(VirtualBox)或WSL原生的虚拟化层(libvirt),完美适配Ansible生态的Linux原生工具链。
步骤1:安装WSL2
- 以管理员身份打开PowerShell,运行以下命令开启WSL和虚拟机平台功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - 重启电脑后,安装WSL2 Linux内核更新包(微软官网可下载x64版本)。
- 设置WSL默认版本为2:
wsl --set-default-version 2 - 从Microsoft Store安装Ubuntu 22.04 LTS(或其他偏好的Linux发行版),首次启动时设置用户名和密码。
步骤2:在WSL内部安装核心依赖
- 更新系统包:
sudo apt update && sudo apt upgrade -y - 安装Python环境:
sudo apt install python3 python3-pip python3-virtualenv -y - 安装Vagrant:
(如果需要最新版,可下载对应Linux的deb包手动安装)sudo apt install vagrant -y - 安装Molecule及Vagrant驱动:
- 创建并激活Python虚拟环境(避免污染系统环境):
virtualenv ~/ansible-test-env source ~/ansible-test-env/bin/activate - 安装所需工具:
pip install molecule molecule-vagrant ansible-core
- 创建并激活Python虚拟环境(避免污染系统环境):
步骤3:配置虚拟化后端
方案A:使用Windows端的VirtualBox(推荐新手)
- 在Windows系统上安装最新版VirtualBox。
- 在WSL的终端中添加环境变量,让Vagrant能访问Windows端的VirtualBox:
echo 'export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"' >> ~/.bashrc source ~/.bashrc - 测试Vagrant连接:
vagrant init ubuntu/jammy64 vagrant up vagrant destroy -f
方案B:使用WSL原生的libvirt(性能更优)
- 在WSL中安装libvirt及KVM:
sudo apt install libvirt-daemon-system libvirt-clients qemu-kvm -y sudo usermod -aG libvirt $USER - 重启WSL会话后,安装Vagrant的libvirt插件:
vagrant plugin install vagrant-libvirt - 测试libvirt后端:
vagrant init ubuntu/jammy64 --provider=libvirt vagrant up vagrant destroy -f
步骤4:测试你的Ansible Role
- 挂载Windows上的代码目录到WSL:比如你的Role在
C:\Users\你的用户名\Projects\my-ansible-role,在WSL中访问/mnt/c/Users/你的用户名/Projects/my-ansible-role。 - 如果还未初始化Molecule配置,运行:
molecule init role --driver-name vagrant my-ansible-role - 进入Role目录,执行完整测试流程:
该命令会自动完成虚拟机创建、Role执行、结果验证、虚拟机销毁的全流程。cd my-ansible-role molecule test
日常使用注意事项
- 每次开始测试前,记得激活Python虚拟环境:
source ~/ansible-test-env/bin/activate。 - 使用VirtualBox时,需确保Windows防火墙允许VirtualBox的网络请求,避免虚拟机启动失败。
- WSL与Windows的文件系统互通,无需复制代码,直接访问
/mnt/盘符即可。
内容的提问来源于stack exchange,提问作者Ji Saa
相关产品推荐
相关产品推荐

