使用Ansible(local_action)旋转流浪者时,未检测到Vagrant VM

时间:2017-03-26 17:59:10

标签: vagrant ansible

考虑以下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(未启动)"。

的行

1 个答案:

答案 0 :(得分:0)

原来在./provisioning中生成了正确的“.vagrant”目录,而Vagrantfile是为./Vagrantfile生成的。虽然“VAGRANT_VAGRANTFILE”正确指向生成的文件,但在我的playbook目录(./provisioning)中生成了“.vagrant”目录。

在对available environment variables进行进一步研究后,我发现了一个更有用的变量; “VAGRANT_CWD”。这将找到生成的Vagrantfile以及生成正确的“.vagrant”目录。 “vagrant status”现在可以正确检测正在运行的VM。

以下是我的代码现在的样子:

---
- 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