Ansible可变滤波器和扩展

时间:2018-02-22 22:01:38

标签: ansible

我正在尝试调试正在过滤的变量,而我的调试语句包含第二个嵌套变量。我似乎找不到适当的格式来使调试工作。

例如:

  vars:
    - bw_type: as
    - patches: [
        PB.ps.21.sp1.551.pb2017091592773,
        PB.as.21.sp1.551.pb2017091555706,
        PB.as.21.sp1.551.pb2017091555707,
        PB.xsp.21.sp1.551.pb2017091891314 ]

- debug: msg="Deployments - {{ patches|select('match','PB.{{ bw_type }}.')|list }}"

据我所知,我可以简单地删除调试消息并对var执行,这样可以正常工作。示例 -

- debug: var=patches|select('match','PB.{{ bw_type }}.')|list

但是我不能在with_items场景中做同样的事情,因为需要额外的胡子,所以我试图让它工作。

我在这里阅读了上一篇文章How can I use Ansible nested variable?

但我不确定如何将此应用于我已实施的过滤。鉴于这篇文章,我也试过以下内容但没有成功。

- debug: msg=" Deployments - {{ vars[patches|select('match','PB.'+ bw_type +'.')|list] }}"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Jinja2语法:

- debug:
    msg: "Deployments - {{ patches | select('match', 'PB.' + bw_type + '.') | list }}"

您引用的帖子是关于在另一个变量的名称中使用变量。这是一个与你不同的问题。