gpt4 book ai didi

filter - Ansible/Jinja2 - 映射列表中的嵌套键

转载 作者:行者123 更新时间:2023-12-03 09:07:47 24 4
gpt4 key购买 nike

在嵌套变量列表中映射属性时,我无法检索其键。

我想从以下强调文本变量中检索“tls_cert_file”的 key :

vault_config_listener:
- tcp:
- address: "0.0.0.0:8200"
- tls_cert_file: "/etc/ssl/wildcard.crt"
- tls_key_file: "/etc/ssl/private/wildcard.key"
- tls_require_and_verify_client_cert: "false"
- tcp:
- address: "127.0.0.1:8200"
- tls_disable: true

调试任务:

- debug:
msg: "{{ (vault_config_listener | selectattr('tcp', 'defined') | map(attribute='tcp')) | selectattr('tls_cert_file','defined') | map(attribute='tls_cert_file') | join('') | dirname }}"

输出:

ok: [test] => {
"msg": ""
}

我的映射工作直到“tcp”,但没有进一步......逻辑有什么问题?

最佳答案

要获取您可以使用的 tls_cert_file 列表

vault_config_listener | selectattr('tcp', 'defined') | map(attribute='tcp') | sum(start=[]) | selectattr('tls_cert_file','defined') | map(attribute='tls_cert_file') | list

注意sum(start=[]) – 它用于展平列表列表。

附注为什么要将可能的(?)多个路径连接到字符串中?

P.P.S 你的数据结构看起来很奇怪。为什么要定义诸如列表之类的 tcp 属性,而不仅仅是:

tcp:
address: 0.0.0.0:8200
tls_cert_file: /etc/ssl/wildcard.crt
tls_key_file: /etc/ssl/private/wildcard.key
tls_require_and_verify_client_cert: false

关于filter - Ansible/Jinja2 - 映射列表中的嵌套键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678882/

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