gpt4 book ai didi

Ansible:检查变量是否包含列表或字典

转载 作者:行者123 更新时间:2023-12-03 20:26:16 25 4
gpt4 key购买 nike

有时,角色需要在调用它们时需要定义不同的强制变量。例如

- 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

我想将列表或字典而不是字符串传递给我的角色。如何断言变量包含字典或列表?

最佳答案

例子:

在字典的情况下,很容易:

---
- 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 )

如果您使用字符串、 bool 值或数字进行测试,则断言将为假。

另一个不错的选择是:

  - 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" )

关于Ansible:检查变量是否包含列表或字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60729009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com