community.general.onepassword_info 模块 – 从 1Password 收集项目

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在剧本中使用它,请指定:community.general.onepassword_info

概要

  • community.general.onepassword_info 封装了 op 命令行实用程序,用于获取关于一个或多个 1Password 项目的数据。

  • 如果找不到任何正在搜索的项目,则会发生严重错误。

  • 建议使用 no_log 选项以避免记录正在检索的密钥的值。

要求

执行此模块的主机需要以下要求。

参数

参数

注释

auto_login

dictionary

包含身份验证详细信息的字典。如果设置了此选项,community.general.onepassword_info 将尝试自动登录 1Password。

如果没有此选项,则必须在运行 Ansible 之前已通过 1Password CLI 登录。

强烈建议将 1Password 凭据存储在 Ansible Vault 中。确保用于加密 Ansible Vault 的密钥的强度等于或高于 1Password 主密码。

master_password

字符串 / 必填

子域的主密码。

指定 auto_login 时,此参数始终是必需的。

secret_key

字符串

子域的密钥。

仅首次登录时需要。

subdomain

字符串

1Password 子域名称 (<subdomain>.1password.com)。

如果未指定此参数,则将使用最近的子域。

username

字符串

1Password 用户名。

仅首次登录时需要。

cli_path

路径

用于指定 op 命令行界面的确切路径

默认值: "op"

search_terms

列表 / 元素=字典 / 必填

一个或多个搜索词的列表。

每个搜索词可以是一个简单的字符串,也可以是一个字典以实现更精细的控制。

传递简单字符串时,search_terms[].field 假定为 password

传递字典时,可以使用以下字段。

field

字符串

要在项目中搜索的字段名称(可选,默认为“password”(如果项目有附件,则为“document”)。

name

字符串

要搜索的 1Password 项目的名称(必填)。

section

字符串

包含指定字段的项目中某个区域的名称(可选,如果未指定,则搜索所有区域)。

vault

字符串

要搜索的特定 1Password 存储库的名称,如果您的 1Password 用户可以访问多个存储库,则此参数很有用(可选)。

属性

属性

支持

描述

check_mode

支持:完全支持

此操作不会修改状态。

可以在 check_mode 中运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持: N/A

此操作不会修改状态。

在差异模式下,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息。

备注

注意

示例

# Gather secrets from 1Password, assuming there is a 'password' field:
- name: Get a password
  community.general.onepassword_info:
    search_terms: My 1Password item
  delegate_to: localhost
  register: my_1password_item
  no_log: true         # Don't want to log the secrets to the console!

# Gather secrets from 1Password, with more advanced search terms:
- name: Get a password
  community.general.onepassword_info:
    search_terms:
      - name:    My 1Password item
        field:   Custom field name       # optional, defaults to 'password'
        section: Custom section name     # optional, defaults to 'None'
        vault:   Name of the vault       # optional, only necessary if there is more than 1 Vault available
  delegate_to: localhost
  register: my_1password_item
  no_log: true                           # Don't want to log the secrets to the console!

# Gather secrets combining simple and advanced search terms to retrieve two items, one of which we fetch two
# fields. In the first 'password' is fetched, as a field name is not specified (default behaviour) and in the
# second, 'Custom field name' is fetched, as that is specified explicitly.
- name: Get a password
  community.general.onepassword_info:
    search_terms:
      - My 1Password item                # 'name' is optional when passing a simple string...
      - name: My Other 1Password item    # ...but it can also be set for consistency
      - name:    My 1Password item
        field:   Custom field name       # optional, defaults to 'password'
        section: Custom section name     # optional, defaults to 'None'
        vault:   Name of the vault       # optional, only necessary if there is more than 1 Vault available
      - name: A 1Password item with document attachment
  delegate_to: localhost
  register: my_1password_item
  no_log: true                           # Don't want to log the secrets to the console!

- name: Debug a password (for example)
  ansible.builtin.debug:
    msg: "{{ my_1password_item['onepassword']['My 1Password item'] }}"

返回值

常用的返回值已在 此处 记录,以下是此模块特有的字段

描述

onepassword

dictionary

每个与给定搜索词匹配的 1password 项目的字典,显示上面第三个示例将返回的内容。

返回:成功

示例: {"A 1Password item with document attachment": {"document": "the contents of the document attached to this item"}, "My 1Password item": {"Custom field name": "the value of this field", "password": "the value of this field"}, "My Other 1Password item": {"password": "the value of this field"}}

作者

  • Ryan Conway (@Rylon)