使用 Ansible (local_action) 启动 vagrant 时未检测到 Vagrant VM
Vagrant VMs are not detected when using Ansible (local_action) to spin up vagrant
考虑以下 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 (not started)".
的行
原来在 ./provisioning 中生成了正确的“.vagrant”目录,而 Vagrantfile 生成到 ./Vagrantfile。尽管 "VAGRANT_VAGRANTFILE" 正确指向生成的文件,但在我的剧本目录 (./provisioning) 中生成了“.vagrant”目录。
进一步研究available environment variables后,我发现了一个更有用的变量; "VAGRANT_CWD"。这将找到生成的 Vagrantfile 以及生成正确的“.vagrant”目录。 "vagrant status" 现在可以正确检测 运行 个虚拟机。
这是我的代码现在的样子:
---
- 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
考虑以下 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 (not started)".
的行原来在 ./provisioning 中生成了正确的“.vagrant”目录,而 Vagrantfile 生成到 ./Vagrantfile。尽管 "VAGRANT_VAGRANTFILE" 正确指向生成的文件,但在我的剧本目录 (./provisioning) 中生成了“.vagrant”目录。
进一步研究available environment variables后,我发现了一个更有用的变量; "VAGRANT_CWD"。这将找到生成的 Vagrantfile 以及生成正确的“.vagrant”目录。 "vagrant status" 现在可以正确检测 运行 个虚拟机。
这是我的代码现在的样子:
---
- 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