有时,角色需要不同的强制变量,在调用它们时需要定义这些变量。例如
- hosts: localhost
remote_user: root
roles:
- role: ansible-aks
name: myaks
resource_group: myresourcegroup
在角色内部,可以像这样控制它:
- name: Assert AKS Variables
assert:
that: "{{ item }} is defined"
msg: "{{ item }} is not defined"
with_items:
- name
- resource_group
我希望将列表或字典传递给我的角色,而不是字符串。我如何断言一个变量包含字典或列表?
发布于 2020-03-17 19:26:58
示例:
在使用字典的情况下,这很简单:
---
- name: Assert if variable is list or dict
hosts: localhost
connection: local
gather_facts: false
vars:
mydict: {}
mylist: []
tasks:
- name: Assert if dictionary
assert:
that: ( mydict is defined ) and ( mydict is mapping )
但在检查列表时,我们需要确保不是映射,而不是字符串和可迭代:
- name: Assert if list
assert:
that: >
( mylist is defined ) and ( mylist is not mapping )
and ( mylist is iterable ) and ( mylist is not string )
如果使用string、boolean或numeric进行测试,则断言将为false。
另一个好的选择是:
- name: Assert if dictionary
assert:
that: ( mydict is defined ) and ( mydict | type_debug == "dict" )
- name: Assert if list
assert:
that: ( mylist is defined ) and ( mylist | type_debug == "list" )
https://stackoverflow.com/questions/60729009
复制