我想通过解析 yaml 并过滤 Ansible 中的某些键来做一件简单的事情(我认为这应该很容易)。
我的 yaml 文件如下所示:
---
- vm: "vm1"
ip: 10.10.10.1
- vm: "vm2"
ip: 10.10.10.2
- test_vm: something
- another_vm: something_other
Run Code Online (Sandbox Code Playgroud)
所以我想不是像这样的表达
lookup('file','my_file.yaml') | from_yaml | selectattr('vm','search','vm1')|list
Run Code Online (Sandbox Code Playgroud)
会工作,但它给出了一个错误
fatal: [localhost]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ lookup('file','{{sysfile}}') | from_yaml | selectattr('vm','search','vm1')|list}}): expected string or bytes-like object"}
Run Code Online (Sandbox Code Playgroud)
如果我删除 test_vm 和 another_vm 键,它工作正常。
ok: [localhost] => {
"msg": [
{
"ip": "10.10.10.1",
"vm": "vm1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试搜索 test_vm 键,它会失败:
fatal: [localhost]: FAILED! => …Run Code Online (Sandbox Code Playgroud)