要解决"Ansible的hostvars在group_vars中不被评估"的问题,可以尝试以下解决方法:
确保正确的目录结构:确保group_vars目录位于Ansible playbook的同级目录中,并且group_vars目录中包含与主机组名称相对应的文件。
检查group_vars文件命名:确保group_vars目录中的文件名与主机组名称完全匹配,包括大小写。
检查group_vars文件格式:确保group_vars文件的格式正确,应为YAML格式。确保文件以"---"开头,并在文件中使用正确的缩进和键值对格式。
检查group_vars文件内容:确保group_vars文件中的变量名称与主机变量名称匹配。例如,如果主机变量名为"host1",则在group_vars文件中的变量名称应为"host1_variable"。
以下是一个示例,演示如何正确使用hostvars在group_vars中评估变量:
首先,创建以下目录结构:
ansible_playbook/
├── group_vars/
│ └── web_servers.yml
└── playbook.yml
然后,在group_vars/web_servers.yml
文件中定义变量:
---
host1_variable: value1
最后,在playbook.yml
中使用hostvars来评估变量:
---
- name: Example playbook
hosts: web_servers
tasks:
- name: Show host variable
debug:
var: hostvars[inventory_hostname]['host1_variable']
在上述示例中,hostvars[inventory_hostname]['host1_variable']
将返回value1
。
确保在运行playbook之前,使用正确的主机组名称和变量名称替换示例中的占位符。