Ansible-检查变量类型
显然,经过几个小时的搜索,没有人遇到过这个用例: 它很简单-我想根据变量类型执行一些ansible逻辑。基本等同于例如instanceofdict、var_名称,但在Ansible中:Ansible-检查变量类型,ansible,jinja2,Ansible,Jinja2,显然,经过几个小时的搜索,没有人遇到过这个用例: 它很简单-我想根据变量类型执行一些ansible逻辑。基本等同于例如instanceofdict、var_名称,但在Ansible中: - name: test debug: msg: "{{ instanceof(var_name, dict) | ternary('is a dictionary', 'is something else') }}" 有什么办法可以做到这一点吗 Q:根据变量类型执行一些ansible逻辑 A:包括
- name: test
debug:
msg: "{{ instanceof(var_name, dict) | ternary('is a dictionary', 'is something else') }}"
有什么办法可以做到这一点吗
Q:根据变量类型执行一些ansible逻辑
A:包括预期的工作。比如说
- set_fact:
myvar:
key1: value1
- debug:
msg: "{{ (myvar is mapping)|
ternary('is a dictionary', 'is something else') }}"
给予
Q:Ansible-检查变量类型
答:一个选项是动态地包含任务。例如,下面的任务
shell>cat任务int
-调试:
msg:正在处理整数{{item}
shell>cat任务str
-调试:
msg:正在处理字符串{{item}
shell>cat任务列表
-调试:
msg:处理列表{{item}
shell>cat任务dict
-调试:
msg:正在处理字典{{item}
用这个剧本
-主机:本地主机
变量:
测试:
- 123
- '123'
-[甲、乙、丙]
-{key1:value1}
任务:
-包括_任务:{{'tasks-'~item}类型_debug}
循环:{{test}}
节略
msg:处理整数123
消息:处理字符串123
消息:处理列表['a','b','c']
msg:'正在处理字典{key1:value1}'
Q:根据变量类型执行一些ansible逻辑
A:包括预期的工作。比如说
- set_fact:
myvar:
key1: value1
- debug:
msg: "{{ (myvar is mapping)|
ternary('is a dictionary', 'is something else') }}"
给予
Q:Ansible-检查变量类型
答:一个选项是动态地包含任务。例如,下面的任务
shell>cat任务int
-调试:
msg:正在处理整数{{item}
shell>cat任务str
-调试:
msg:正在处理字符串{{item}
shell>cat任务列表
-调试:
msg:处理列表{{item}
shell>cat任务dict
-调试:
msg:正在处理字典{{item}
用这个剧本
-主机:本地主机
变量:
测试:
- 123
- '123'
-[甲、乙、丙]
-{key1:value1}
任务:
-包括_任务:{{'tasks-'~item}类型_debug}
循环:{{test}}
节略
msg:处理整数123
消息:处理字符串123
消息:处理列表['a','b','c']
msg:'正在处理字典{key1:value1}'
我知道可以解决上述用例的映射过滤器,但它只适用于jinja2认为是映射的东西,可以是任何东西,例如,我不知道它是什么。我想知道这个问题是否有一个合适的解决方案。如果你真的认为映射不是一个合适的解决方案,为什么不发布一个例子来证明它呢?例子在问题标题中。我没有要求提供一种方法来测试jinja2开发人员认为映射是什么。我询问了一种检查变量类型的方法。这意味着能够检查事物是否是一个列表、一个集合、一个目录等等,并区分所有这些。我在这里只使用了一个dict作为例子。在没有其他答案的情况下,我将您的答案标记为一个,因为没有自定义过滤器,没有其他方法可以实现,但这绝对不是我描述的问题的真正解决方案。我知道可以解决上述用例的映射过滤器,但它只适用于jinja2认为的映射,它可以是任何东西,例如,我不知道它是什么。我想知道这个问题是否有一个合适的解决方案。如果你真的认为映射不是一个合适的解决方案,为什么不发布一个例子来证明它呢?例子在问题标题中。我没有要求提供一种方法来测试jinja2开发人员认为映射是什么。我询问了一种检查变量类型的方法。这意味着能够检查事物是否是一个列表、一个集合、一个目录等等,并区分所有这些。我在这里只使用了一个dict作为例子。在没有其他答案的情况下,我已经将您的答案标记为一个,因为没有自定义过滤器,没有其他方法可以做到这一点,但这肯定不是我描述的问题的真正解决方案。非常有限,但我想这是做类似事情的唯一方法。ThanksVery有限公司,但我想这是做类似事情的唯一方法。谢谢