尝试在ansible中基于var类型设置条件
我似乎找不到匹配字符串、列表和字典的筛选器。我的目标是根据给定的变量运行不同的任务块。下面是如何写的:尝试在ansible中基于var类型设置条件,ansible,Ansible,我似乎找不到匹配字符串、列表和字典的筛选器。我的目标是根据给定的变量运行不同的任务块。下面是如何写的: - name: BLOCK of stuff based on our var is a string when: var | type == 'string' block: # bunch of tasks - name: BLOCK of stuff based on our var is a list when: var | type == 'array' bl
- name: BLOCK of stuff based on our var is a string
when: var | type == 'string'
block:
# bunch of tasks
- name: BLOCK of stuff based on our var is a list
when: var | type == 'array'
block:
# bunch of tasks
- name: BLOCK of stuff based on our var is a dictionary
when: var | type == 'dict'
block:
# bunch of tasks
你可以看一看。有了这些列表,唯一的困难是没有专门查找列表的测试。因此,您必须检查变量是否为序列,并排除字符串和dict 以下是一个示例剧本:
--
-主机:本地主机
收集事实:错误
变量:
测试变量:
-“我是一根绳子”
-[‘我’、‘是’、‘a’、‘名单’]
-{this:is,a:dict}
-这是一个整数
-2.34#这里有一个浮球
任务:
-名称:检查var是否为字符串
调试:
这是一个字符串
当:项为字符串时
循环:“{test_vars}}”
-名称:检查var是否为列表
调试:
这是一个列表
什么时候:
-项目是顺序
-项不是字符串
-项目未映射
循环:“{test_vars}}”
-名称:检查var是否为dict
调试:
味精:这是一个口述
何时:项正在映射
循环:“{test_vars}}”
其中:
PLAY [localhost] ***********************************************************************************************************************************************************************************************************************
TASK [Check if var is a string] ********************************************************************************************************************************************************************************************************
ok: [localhost] => (item=I'm a string) => {
"msg": "this is a string"
}
skipping: [localhost] => (item=['I', 'am', 'a', 'list'])
skipping: [localhost] => (item={'this': 'is', 'a': 'dict'})
skipping: [localhost] => (item=10)
skipping: [localhost] => (item=2.34)
TASK [Check if var is a list] **********************************************************************************************************************************************************************************************************
skipping: [localhost] => (item=I'm a string)
ok: [localhost] => (item=['I', 'am', 'a', 'list']) => {
"msg": "this is a list"
}
skipping: [localhost] => (item={'this': 'is', 'a': 'dict'})
skipping: [localhost] => (item=10)
skipping: [localhost] => (item=2.34)
TASK [Check if var is a dict] **********************************************************************************************************************************************************************************************************
skipping: [localhost] => (item=I'm a string)
skipping: [localhost] => (item=['I', 'am', 'a', 'list'])
ok: [localhost] => (item={'this': 'is', 'a': 'dict'}) => {
"msg": "this is a dict"
}
skipping: [localhost] => (item=10)
skipping: [localhost] => (item=2.34)
PLAY RECAP *****************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0