gpt4 book ai didi

jinja2 - Ansible 测试变量类型

转载 作者:行者123 更新时间:2023-12-02 09:42:06 27 4
gpt4 key购买 nike

我正在使用现有角色,并且希望对其进行修改以扩展其功能。目前,它的任务之一是创建目录。这些目录作为包含字符串列表的变量传递给角色,然后在 with_items 语句中进行迭代。但是,我更愿意传递以下形式的字典列表,例如{名称:foo,模式:751}

到目前为止一切顺利;我可以简单地编辑角色以使其接受此类输入。但是,我还想让它向后兼容旧格式,即项目是字符串。

有没有办法测试变量的类型,然后基于此返回不同的值(或执行不同的任务)?也许使用 Jinja2 过滤器?我简单地浏览了一下 conditionals手册中列出了,但没有任何东西引起我的注意可以在这种情况下使用。

最佳答案

您可以使用 default() 实现向后兼容性。

- file:
path: "{{ item.name | default(item) }}"
mode: "{{ item.mode | default(omit) }}"
state: directory
with_items: your_list

如果item具有name属性,请使用它,否则只需使用该项目本身。

您的字典中可能拥有的所有其他属性也是如此。特殊变量 omit 会忽略任务中的整个选项,就好像没有模式传递给 file 模块一样。当然,您可以设置任何其他默认值。

文档引用:

关于jinja2 - Ansible 测试变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com