Ansible 查找变量和访问值

问题描述 投票:0回答:1

我试图实现查找 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" }

我想获取变量值,然后对字符长度进行断言。

ansible
1个回答
0
投票

默认情况下,

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')  }}"

(以上两种解决方案均已记录在此处)。

© www.soinside.com 2019 - 2024. All rights reserved.