ansible - Ansible 转义点与 map 函数一起用作属性
问题描述
我有一个对象变量的键,我无法在 Ansible 剧本中转义,可能是因为包含点,
这是 的数据结构variable
:
"results":[
{
//snip//
"changed": false,
"hostvars[item].commandResult.stdout": "abc",
//snip//
},
{
//snip//
"changed": true,
"hostvars[item].commandResult.stdout": "xyz",
//snip//
}
]
我无法"hostvars[item].commandResult.stdout"
用这本剧本提取其中的内容,
- debug:
msg: "{{variable.results | map(attribute='hostvars[item].commandResult.stdout') }}"
虽然我可以获得其他价值就好了,
- debug:
msg: "{{variable.results | map(attribute='changed') }}"
我尝试使用\
,'.'
和{{...}}
来逃避.
(点),但仍然没有运气。我怀疑这是.
因为此错误消息:
msg: |-
The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'hostvars[item]'
运行ansible-playbook -vvv
命令时
我怎么能映射"hostvars[item].commandResult.stdout"
?
解决方案
原来我通过set_fact
首先包裹在 Ansible 中来解决它:
- set_fact:
variable: "{{hostvars[item].commandResult.stdout_lines}}"
with_items: "{{ groups['servers'] }}"
register: all_result
- debug:
msg: "{{all_result.results | map(attribute='ansible_facts') | list | to_nice_json }}
不过,转义点的原始问题仍未得到解答。
推荐阅读
- swift - CoreML 图像检测
- python - 从图像中提取表格数据
- c++ - 尽管实现看起来正确,但在 DP 问题中得到错误答案
- javascript - 使用 React Native 中的 if 语句从 Firebase 接收特定数据
- php - Laravel 从两个表中获取数据而不使用分页连接
- kubernetes - 在 Minikube 服务器(1.6.2)上安装 helm 2.13.0 找不到分蘖
- hyper-v - 尝试进入“虚拟交换机管理器”时调用错误
- html - 如何格式化 TWIG 中的地址?
- javascript - 仅在相同的起始字母字符串之间替换逗号
- python - 在 Django 视图中的查询中过滤查询