如果我运行,ansible-playbook playbooks/snapshot.yml -l my.host.net
我想引用一个VMID
预设为此主机虚拟机 ID(例如 4321)的变量。
我发现一个问题这应该可以回答这个问题,但是当我将my.host.net.yml
(下面)添加到host_vars
我的项目下的目录时,我在运行剧本时收到错误...'VMID' is undefined
。要么是 ansible 没有自动读取host_vars/my.host.net.yml
,要么是我弄乱了。
---
- hosts: all
gather_facts: false
tasks:
- name: print a host variable
debug:
msg: "hostvar VMID is {{ VMID }}"
host_vars/my.host.net.yml
---
VMID: 4321
更新-添加目录结构:
ansible
├── ansible.cfg
├── group_vars
├── host_vars
│ └── my.host.net.yml
├── inventories
├── playbooks
│ └── snapshot.yml
├── roles
└── tests
答案1
对于遇到此问题的其他任何人,我最终将符号链接放在了我的playbooks
目录中。在设置 ansible 时,我没有意识到将 playbook 放在不同的目录中会导致这些问题。我当然不希望数百个 playbook 弄乱 ansible 根目录,所以这有效。我可以对group_vars
我的 playbook 中的做同样的事情,vars_files: ../group_vars/
但目前看来这没问题。
ansible
├── ansible.cfg
├── group_vars
├── host_vars
│ └── my.host.net.yml
├── inventories
├── templates
├── playbooks
│ ├── snapshot.yml
│ ├── templates -> ../templates
| └── host_vars -> ../host_vars
├── roles
└── tests