Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible-检查变量类型_Ansible_Jinja2 - Fatal编程技术网

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:包括

显然,经过几个小时的搜索,没有人遇到过这个用例:

它很简单-我想根据变量类型执行一些ansible逻辑。基本等同于例如instanceofdict、var_名称,但在Ansible中:

- 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有限公司,但我想这是做类似事情的唯一方法。谢谢