小编jka*_*vas的帖子

Ansible - 如何在不同键的 yaml 中使用 selectattr

我想通过解析 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)

python jinja2 ansible

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

ansible ×1

jinja2 ×1

python ×1