在 ansible 项目中,我有一个文件夹,其中包含多个带有变量的 yaml 文件。我使用 include_vars 模块将这些变量获取到剧本中。但现在我必须从剧本使用的角色中获取这些变量,并且 include_vars 模块使用角色文件夹内的 vars 文件夹,因此我无法从角色文件夹外部的文件夹中获取变量文件(如果路径是相对的并且任务位于角色内) ,它将查看角色的 vars/ 子目录)。有人可以建议当我使用此文件夹的相对路径时如何从角色外部的文件夹中获取变量吗?
在角色的主要任务中使用 include_vars 模块时,它总是将角色中 vars 文件夹的路径插入到变量文件夹的相对路径中
├── roles
│ ├── apply_configuration
│ │ ├── handlers
│ │ │ └── main.yml
│ │ └── tasks
│ │ └── main.yml
└── topologies
└── topo1
├── device1
│ ├── config_vars
│ │ ├── vars1.yml
│ │ ├── vars2.yml
│ │ ├── vars3.yml
致命:[设备1]:失败! => {“ansible_facts”:{},“ansible_included_var_files”:[],“已更改”:false,“消息”:“/home/user1/git/ansible_project/roles/apply_configuration/vars/topologies/topo1/device1 /config_vars 目录不存在”}
实际上我找到了使用 fileglob 查找插件的解决方法。我可以访问 vars 文件夹并从文件中获取所有变量:
- name: Include variables
ansible.builtin.include_vars:
file: "{{ item }}"
with_fileglob:
- /topologies/topo1/device1/config_vars/*