【发布时间】:2019-01-21 19:15:33
【问题描述】:
我正在尝试在本地的每台机器上构建某些软件。该剧本将下载源代码压缩包(使用get_url),配置并构建它。
我想将要构建的项目列表定义为如下所示:
srcpkg:
python:
ver: "3.7.0"
sha: "0382996d1ee6aafe59763426cf0139ffebe36984474d0ec4126dd1c40a8b3549"
url: "https://www.python.org/ftp/python/{{ srcpkg.python.ver }}/python/Python-{{ srcpkg.python.pyver }}.tar.xz"
不幸的是,这种对自身的引用(上例中的url 指的是ver)导致 Ansible 在运行时抛出“检测到递归循环”错误。
有没有一种方法——无论是在 Ansible 中,还是在 Yaml 中——定义事物,这样我就不必在多个地方重复该版本?
更新:尝试使用锚/参考:
srcpkg:
python:
ver: &ver "3.7.0"
sha: "0382996d1ee6aafe59763426cf0139ffebe36984474d0ec4126dd1c40a8b3549"
url: "https://www.python.org/ftp/python/{{ *ver }}/python/Python-{{ *ver }}.tar.xz"
无济于事:Ansible 抱怨“意外的 '*'”。
【问题讨论】:
标签: ansible yaml ansible-2.x pyyaml