我正在使用现有角色,我希望对其进行修改以扩展其功能.目前,其任务之一是创建目录.这些目录作为包含字符串列表的变量传递给角色,然后在with_items语句中迭代.但是,我更愿意传递一个表格的词典列表,例如{name: foo, mode: 751}.
到现在为止还挺好; 我可以简单地编辑角色以使其采用这种输入.但是,我也想让它向后兼容旧格式,即项目是字符串.
有没有办法测试变量的类型,然后根据这个返回不同的值(或执行不同的任务)?也许使用Jinja2过滤器?我简要地看了一下手册中列出的条件,但没有引起我的注意,可以在这种情况下使用.
您可以使用default()向后兼容性.
- file:
path: "{{ item.name | default(item) }}"
mode: "{{ item.mode | default(omit) }}"
state: directory
with_items: your_list
Run Code Online (Sandbox Code Playgroud)
如果item有name属性,请使用它,否则只需使用该项本身.
您在dict中可能拥有的所有其他属性也是如此.特殊变量omit将省略任务中的整个选项,就好像没有模式传递给file模块一样.当然你可以设置任何其他默认值.
文档参考:
| 归档时间: |
|
| 查看次数: |
6925 次 |
| 最近记录: |