我试图实现查找 Ansible 配置中变量名称以“password”结尾的所有变量。然后我想访问密码变量的值并检查它们的字符长度。
我可以查找所有密码变量,lookup(‚varnames‘, ‚password‘)
但是如何循环结果列表并获取它们的值?
我试过:
- name: Show passwords
ansible.builtin.debug:
msg: "{{ item }}"
with_items: "{{ lookup('ansible.builtin.varnames', 'password') }}"
但我得到的是变量名称本身:
ok: [host1] => (item=test_password,test_password_default,admin_password,ldap_password) => { "msg": "test_password,test_password_default,admin_password,ldap_password" }
我想获取变量值,然后对字符长度进行断言。
默认情况下,
varnames
查找会生成单个逗号分隔的字符串。添加wantlist=true
:或者使用
query
代替lookup
(query
总是返回一个列表):(以上两种解决方案均已记录在此处)。
最后,您可以使用
vars
查找来获取变量的值:请注意,
vars
查找仅返回“顶级变量名称”。如果您确实想要事实值,您可能需要通过以下方式查找它们hostvars
。