我试图实现查找 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
:
- name: Show passwords
ansible.builtin.debug:
msg: "{{ item }}"
with_items: "{{ lookup('ansible.builtin.varnames', 'password', wantlist=true) }}"
或者使用
query
代替 lookup
(query
始终返回列表):
- name: Show passwords
ansible.builtin.debug:
msg: "{{ item }}"
with_items: "{{ query('ansible.builtin.varnames', 'password') }}"
(以上两种解决方案均已记录在此处)。