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'] }}"
返回值
| 键 | 描述 | 
|---|---|
| 针对给定路径读取的原始结果。 已返回:成功 | 
