使用 Ansible (local_action) 启动无游侠时,不会检测到流浪者虚拟机



请考虑以下 Ansible 剧本代码...

# provisioning/roles/operations/tasks/vagrant.yml
---
- block:
  - name: Copy vagrantfile onto dev machine
    local_action:
      template src=Vagrantfile.j2
      dest={{playbook_dir}}/../Vagrantfile
  - name: Boot up VMs
    local_action:
      command vagrant up
    environment:
      VAGRANT_VAGRANTFILE: "{{playbook_dir}}/../Vagrantfile"
    register: vagrantUpResults
  - debug: msg="{{vagrantUpResults}}"
  tags:
  - vagrant

这将正确生成有效的Vagrantfile,并将成功运行"vagrant up"命令。 但是,通过 ansible 执行此操作,它似乎不会注册新创建的 VM。 我知道这一点,因为当我跑步时...

vagrant status

我看到声明"VM(未启动("的行。

原来正确的

".vagrant"目录是在./provision中生成的,而Vagrantfile是生成到./Vagrantfile的。 虽然"VAGRANT_VAGRANTFILE"正确地指向生成的文件,但".vagrant"目录正在我的剧本目录(./provisioning(中生成。

在进一步研究可用的环境变量后,我发现了一个更有用的变量;"VAGRANT_CWD"。 这将找到生成的Vagrantfile,并生成正确的".vagrant"目录。 "流浪状态"现在可以正确检测正在运行的虚拟机。

这是我的代码现在的样子:

---
- block:
  - name: Copy vagrantfile onto dev machine
    local_action:
      template src=Vagrantfile.j2
      dest={{playbook_dir}}/../Vagrantfile
  - name: Boot up VMs
    local_action:
      command vagrant up
    environment:
      VAGRANT_CWD: "{{playbook_dir}}/.."
    register: vagrantUpResults
  - debug: msg="{{vagrantUpResults}}"
  tags:
  - vagrant

最新更新