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

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.general。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求

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

概要

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

  • 如果无法找到任何正在搜索的项目,则会发生致命错误。

  • 建议与 no_log 选项一起使用,以避免记录检索到的机密值。

要求

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

参数

参数

注释

auto_login

字典

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

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

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

master_password

字符串 / 必需

您的子域的主密码。

当指定 auto_login 时,始终需要此项。

secret_key

字符串

您的子域的密钥。

仅在初始登录时需要。

subdomain

字符串

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

如果未指定此项,将使用最近的子域名。

username

字符串

1Password 用户名。

仅在初始登录时需要。

cli_path

路径

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

默认值: "op"

search_terms

列表 / 元素=字典 / 必需

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

每个搜索项可以是简单的字符串,也可以是用于更多控制的字典。

当传递一个简单的字符串时,假定 search_terms[].fieldpassword

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

field

字符串

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

name

字符串

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

section

字符串

此项中包含指定字段的部分的名称(可选,如果未指定,将搜索所有部分)。

vault

字符串

要搜索的特定 1Password Vault 的名称,如果您 1Password 用户有权访问多个 Vault,则此项很有用(可选)。

属性

属性

支持

描述

check_mode

支持:完全

此操作不修改状态。

可以在 check_mode 中运行并返回更改的状态预测,而无需修改目标。

diff_mode

支持: 不适用

此操作不修改状态。

当处于差异模式时,将返回有关已更改(或可能需要在 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

字典

与给定搜索条件匹配的每个 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)