我正在尝试根据CentOS发行版为rpm软件包设置正确的url。在vars文件中,我有:
elrepo-rpm-url:
7: https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
8: https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
elrepo: elrepo-rpm-url[{{ansible_distribution_major_version}}]
然后,我尝试遍历此变量,期望使用url,但改为使用elrepo-rpm-url[8]
。
我如何实现对实际url的检索?有哪些选择?我可以使用模板吗?
当我使用建议的语法:
elrepo: "{{ elrepo-rpm-url[ansible_distribution_major_version] }}"
存在错误:
The task includes an option with an undefined variable. The error was: 'dict object' has no attribute u'8'`
但是当按字面指定发行版本时:
elrepo: "{{ elrepo-rpm-url[8] }}"
我正在获得所需的URL结果。
是否可以避免使用硬编码的值?
您的语法从以前的哈希中获取动态变量是错误的。您正在构造一个字符串,该字符串要在jinja2模板标记中完全扩展变量值。您可以通过以下方式对其进行纠正:
elrepo: "{{ elrepo-rpm-url[ansible_distribution_major_version] }}"