我正在尝试使用 Ansible 设置一台用作服务器的计算机。基本上,这很有效,但我有一个命令无法工作。我想安装 Virtualbox 并更改存储虚拟机的默认文件夹。这可以通过 来完成vboxmanage setproperty machinefolder /path/to/folder
。我知道这个命令有效。我在另一台没有安装 Ansible 的机器上使用了它。在那里按预期工作。
这是我的(缩短的)剧本:
---
- name: Caprica Playbook
hosts: all
vars:
default_username: starbuck
default_password: start123
vm_folder: "/home/{{ default_username }}/vagrantboxes"
become: true
tasks:
# create + config default user
# --> ansible code here ...
# ssh config
# --> ansible code here ...
# config
# --> ansible code here ...
# install basic packages
# --> ansible code here ...
# install docker
# --> ansible code here ...
#install vagrant + virtualbox
- name: Install Virtualbox
apt:
pkg:
- virtualbox
- virtualbox-qt
- virtualbox-dkms
state: latest
update_cache: true
- name: Set virtual machine folder
ansible.builtin.shell: "vboxmanage setproperty machinefolder {{ vm_folder }}"
args:
executable: /bin/bash
- name: Install Vagrant
ansible.builtin.shell: |
curl https://releases.hashicorp.com/vagrant/2.2.19/vagrant_2.2.19_x86_64.deb --output vagrant.deb
sudo dpkg -i vagrant.deb
rm vagrant.deb
args:
executable: /bin/bash
- name: Install Vagrant plugins
ansible.builtin.shell: |
vagrant plugin install vagrant-cachier
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-docker-compose
args:
executable: /bin/bash
麻烦的部分是“设置虚拟机文件夹”部分。当我运行这个剧本时,似乎这部分一直被完全忽略。
我编写了一个 Chef InSpec 测试来检查我的 Ansible 安装。检查正确的 VM 文件夹总是返回错误。
x Bash command vboxmanage list systemproperties | grep folder stdout is expected to cmp == "Default machine folder: /home/starbuck/virtualmachines"
expected: Default machine folder: /home/starbuck/virtualmachines
got: Default machine folder: /home/starbuck/VirtualBox VMs
它始终返回默认路径。
有人知道为什么“设置虚拟机文件夹”部分不起作用吗?