根据Ansible vars文件中的发行版本来初始化变量

问题描述 投票:0回答:1

我正在尝试根据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结果。

是否可以避免使用硬编码的值?

ansible ansible-2.x
1个回答
0
投票

您的语法从以前的哈希中获取动态变量是错误的。您正在构造一个字符串,该字符串要在jinja2模板标记中完全扩展变量值。您可以通过以下方式对其进行纠正:

elrepo: "{{ elrepo-rpm-url[ansible_distribution_major_version] }}"
© www.soinside.com 2019 - 2024. All rights reserved.