我正在使用现有角色,并且希望对其进行修改以扩展其功能。目前,其任务之一是创建目录。这些目录作为包含字符串列表的变量传递给角色,然后在with_items
语句中迭代。不过,我宁愿传递一个形式的字典列表,例如{name: foo, mode: 751}
。Ansible测试变量类型
到目前为止这么好;我可以简单地编辑角色以使其采用这种输入。但是,我也想让它与旧格式向后兼容,即项目是字符串的位置。
有没有办法测试一个变量的类型,然后根据这个返回不同的值(或执行不同的任务)?也许使用Jinja2过滤器?我简要地看了手册中列出的conditionals,但没有引起我注意,可以在这种情况下使用。
嗯,我确信我已经尝试过..谢谢,这是一个不错的和干净的解决方案!尽管它比我的问题允许的更通用一些(因为我错误地寻找类型检查解决方案),但它恰好符合要求。 – Joost
我知道,它确实没有回答你的问题。 Afaik没有简单的方法来测试类型。 Jinja2有一个测试过滤器'|字符串“,但我从来没有得到它的工作。 '|迭代“过滤器的作品 - 不幸的是一个字符串也是可迭代的...可以为此创建自定义过滤器插件,但是我认为如果可以简单地使用'default',那么这会带来一点开销。至少在这种情况下。 – udondan
是的,包括一个自定义过滤器,可能是一个简单的单行比较差异造成不必要的混乱。 – Joost