使用 Ansible 更改 Virtualbox 默认 VM 文件夹

使用 Ansible 更改 Virtualbox 默认 VM 文件夹

我正在尝试使用 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

它始终返回默认路径。

有人知道为什么“设置虚拟机文件夹”部分不起作用吗?

相关内容