首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >价值深入浅出

价值深入浅出
EN

Server Fault用户
提问于 2020-04-27 17:20:37
回答 1查看 78关注 0票数 1

是否有一种简单的方法来访问嵌套dicts中的值,如果其中一个dicts存在,它就不会出错。不知道该如何称呼它,但它被建议为ECMAScript的可选链接。我唯一发现的是一个添加"safe_item“的safe_item,但是它已经关闭了。

我正在尝试设置一些类似于"{{ hostvars[item].ip_addr | default(hostvars[item]['ansible_default_ipv4']['address']) }}"的操作,但是当ansible_default_ipv4没有被设置时(例如当其中一个主机停机时),它不会出错。

"{{ hostvars[item].ip_addr | default(hostvars[item] | getattr(['ansible_default_ipv4', 'address'], omit)) }}"这样的东西会很棒。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-05-02 00:39:05

这有点难看,但您可以嵌套default过滤器:

代码语言:javascript
运行
复制
{{ hostvars[item].ip_addr | default(hostvars[item]['ansible_default_ipv4']['address'] | default(omit)) }}

请注意,omit只在向模块参数提供非必需值时才能工作。在其他情况下(例如,使用set_fact设置var值),您必须提供一些默认值。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1014436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档