当映射嵌套变量列表中的属性时,我无法检索其键。
我想从下面检索“tls_cert_file”的密钥强调文字变量:
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
note 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)