community.hashi_vault.vault_list 查找 – 对 HashiCorp Vault 执行列表操作
注意
此查找插件是 community.hashi_vault 集合 (版本 6.2.0) 的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.hashi_vault
。您需要进一步的要求才能使用此查找插件,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.hashi_vault.vault_list
。
community.hashi_vault 4.1.0 中的新增功能
概要
对 HashiCorp Vault 中给定的路径执行通用列表操作。
要求
执行此查找的本地控制器节点上需要以下要求。
术语
参数 |
注释 |
---|---|
要列出的 Vault 路径。 |
关键字参数
这描述了查找的关键字参数。这些是以下示例中 key1=value1
、key2=value2
等值:lookup('community.hashi_vault.vault_list', key1=value1, key2=value2, ...)
和 query('community.hashi_vault.vault_list', key1=value1, key2=value2, ...)
参数 |
注释 |
---|---|
要使用的身份验证方法。
选择
配置
|
|
如果指定,则将该值设置为用作 配置
|
|
如果使用临时的访问密钥和私有密钥,则为 AWS 安全令牌。 配置
|
|
Azure AD 服务主体或托管标识的客户端 ID(也称为应用程序 ID)。应该是一个 UUID。 如果未指定,将使用系统分配的托管标识。 配置
|
|
Azure AD 服务主体的客户端密钥。 配置
|
|
在 Azure Active Directory 中注册的应用程序的资源 URL。通常不应更改默认值。 默认值: 配置
|
|
服务主体的 Azure Active Directory 租户 ID(也称为目录 ID)。应该是一个 UUID。 当使用服务主体向 Vault 进行身份验证时,这是必需的,例如,当指定了 azure_client_id 和 azure_client_secret 时,这是必需的。 当使用托管标识向 Vault 进行身份验证时,这是可选的。 配置
|
|
用于身份验证的证书路径。 如果未通过任何其他方式指定,则将使用 配置
|
|
对于 配置
|
|
对于 配置
|
|
Vault 挂载点。 如果未指定,则使用给定身份验证方法的默认挂载点。 不适用于令牌身份验证。 配置
|
|
秘密所在的 Vault 命名空间。此选项需要 HVAC 0.7.0+ 和 Vault 0.11+。 或者,可以通过在身份验证挂载点和/或秘密路径前加上命名空间来实现(例如, 如果设置了环境变量 配置
|
|
身份验证密码。 配置
|
|
用于访问 Vault 服务的代理 URL。 它可以是字符串或字典。 如果它是字典,请提供方案(例如, 如果它是字符串,请提供一个 URL,该 URL 将用作 可以解释为字典的字符串将被转换为字典(请参见示例)。 您可以为 HTTP 和 HTTPS 资源指定不同的代理。 如果未指定,则使用 Requests 库中的环境变量。 配置
|
|
允许基于 urllib3 库中的 Retry 类重试错误。 此集合为重试与 Vault 的连接定义了建议的默认值。 此选项可以指定为正数(整数)或字典。 如果未指定此选项或数字为 数字设置重试总次数,并使用集合默认值进行其他设置。 字典值直接用于初始化 有关重试的详细信息,请参阅集合用户指南。 配置
|
|
控制是否以及如何显示有关重试的消息。 如果未重试请求,则此操作无效。 选择
配置
|
|
Vault 角色 ID 或名称。用于 对于 对于 配置
|
|
用于 Vault AppRole 身份验证的秘密 ID。 配置
|
|
设置连接超时时间(以秒为单位)。 如果未设置,则使用 配置
|
|
Vault 令牌。令牌可以通过列出的 [env] 变量显式指定,也可以通过 如果没有显式或通过 env 提供令牌,则插件将根据 token_path 和 token_file 确定的令牌文件进行检查。 令牌加载顺序(先找到的优先)为 配置
|
|
如果未指定令牌,则会尝试从此文件(位于 token_path 中)读取令牌。 默认值: 配置
|
|
如果未指定令牌,则会尝试从此路径读取 token_file。 配置
|
|
对于令牌身份验证,将执行 如果您的令牌不具备 选择
配置
|
|
Vault 服务的 URL。 如果未通过任何其他方式指定,将使用 如果也未定义 配置
|
|
身份验证用户名。 配置
|
|
控制 SSL 证书的验证,通常只在自签名证书时才需要关闭此选项。 如果设置了 如果未设置 validate_certs 或 选择
配置
|
说明
注意
当关键字参数和位置参数一起使用时,位置参数必须列在关键字参数之前:
lookup('community.hashi_vault.vault_list', term1, term2, key1=value1, key2=value2)
和query('community.hashi_vault.vault_list', term1, term2, key1=value1, key2=value2)
另请参阅
另请参阅
- community.hashi_vault.vault_list
对 HashiCorp Vault 执行列表操作。
示例
- name: List all secrets at a path
ansible.builtin.debug:
msg: "{{ lookup('community.hashi_vault.vault_list', 'secret/metadata', url='https://vault:8201') }}"
# For kv2, the path needs to follow the pattern 'mount_point/metadata' or 'mount_point/metadata/path' to list all secrets in that path
- name: List access policies
ansible.builtin.debug:
msg: "{{ lookup('community.hashi_vault.vault_list', 'sys/policies/acl', url='https://vault:8201') }}"
- name: Perform multiple list operations with a single Vault login
vars:
paths:
- secret/metadata
- sys/policies/acl
ansible.builtin.debug:
msg: "{{ lookup('community.hashi_vault.vault_list', *paths, auth_method='userpass', username=user, password=pwd) }}"
- name: Perform multiple list operations with a single Vault login in a loop
vars:
paths:
- secret/metadata
- sys/policies/acl
ansible.builtin.debug:
msg: '{{ item }}'
loop: "{{ query('community.hashi_vault.vault_list', *paths, auth_method='userpass', username=user, password=pwd) }}"
- name: Perform list operations with a single Vault login in a loop (via with_)
vars:
ansible_hashi_vault_auth_method: userpass
ansible_hashi_vault_username: '{{ user }}'
ansible_hashi_vault_password: '{{ pwd }}'
ansible.builtin.debug:
msg: '{{ item }}'
with_community.hashi_vault.vault_list:
- secret/metadata
- sys/policies/acl
- name: Create fact consisting of list of dictionaries each with secret name (e.g. username) and value of a key (e.g. 'password') within that secret
ansible.builtin.set_fact:
credentials: >-
{{
credentials
| default([]) + [
{
'username': item,
'password': lookup('community.hashi_vault.vault_kv2_get', item, engine_mount_point='vpn-users').secret.password
}
]
}}
loop: "{{ query('community.hashi_vault.vault_list', 'vpn-users/metadata')[0].data['keys'] }}"
no_log: true
- ansible.builtin.debug:
msg: "{{ credentials }}"
- name: Create the same as above without looping, and only 2 logins
vars:
secret_names: >-
{{
query('community.hashi_vault.vault_list', 'vpn-users/metadata')
| map(attribute='data')
| map(attribute='keys')
| flatten
}}
secret_values: >-
{{
lookup('community.hashi_vault.vault_kv2_get', *secret_names, engine_mount_point='vpn-users')
| map(attribute='secret')
| map(attribute='password')
| flatten
}}
credentials_dict: "{{ dict(secret_names | zip(secret_values)) }}"
ansible.builtin.set_fact:
credentials_dict: "{{ credentials_dict }}"
credentials_list: "{{ credentials_dict | dict2items(key_name='username', value_name='password') }}"
no_log: true
- ansible.builtin.debug:
msg:
- "Dictionary: {{ credentials_dict }}"
- "List: {{ credentials_list }}"
- name: List all userpass users and output the token policies for each user
ansible.builtin.debug:
msg: "{{ lookup('community.hashi_vault.vault_read', 'auth/userpass/users/' + item).data.token_policies }}"
loop: "{{ query('community.hashi_vault.vault_list', 'auth/userpass/users')[0].data['keys'] }}"
返回值
键 |
描述 |
---|---|
针对给定路径读取的原始结果。 已返回:成功 |