community.general.onepassword 查询 – 从 1Password 获取字段值
注意
此查询插件是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此查询插件,有关详细信息,请参阅 需求。
要在 playbook 中使用它,请指定:community.general.onepassword
。
概要
community.general.onepassword 使用
op
命令行实用程序来从 1Password 获取特定字段值。
需求
以下需求在执行此查询的本地控制器节点上是必需的。
op
1Password 命令行实用程序
术语
参数 |
注释 |
---|---|
要检索的项目标识符(不区分大小写的 UUID 或名称)。 |
关键词参数
这描述了查询的关键词参数。这些是在以下示例中的值 key1=value1
、key2=value2
等:lookup('community.general.onepassword', key1=value1, key2=value2, ...)
和 query('community.general.onepassword', key1=value1, key2=value2, ...)
参数 |
注释 |
---|---|
要定位的帐户 ID。 |
|
1Password 的域名。 默认值: |
|
从每个匹配项返回的字段(不区分大小写)。 默认值: |
|
用于解锁指定保管库的密码。 |
|
执行初始登录时使用的密钥。 |
|
包含要检索的字段的项目部分(不区分大小写)。如果不存在,则将返回任何部分的第一个匹配项。 |
|
服务帐户的访问密钥。 仅适用于 1Password CLI 版本 2 或更高版本。 配置
|
|
要针对其进行身份验证的 1Password 子域名。 |
|
用于登录的用户名。 |
|
包含要检索的项目的保管库(不区分大小写)。如果不存在,则将搜索所有保管库。 |
备注
注意
当同时使用关键词参数和位置参数时,位置参数必须列在关键词参数之前:
lookup('community.general.onepassword', term1, term2, key1=value1, key2=value2)
和query('community.general.onepassword', term1, term2, key1=value1, key2=value2)
此查找将使用现有的 1Password 会话(如果存在)。如果不存在,并且您已经执行了初始登录(意味着
~/.op/config
、~/.config/op/config
或~/.config/.op/config
存在),则只需要master_password
。在此场景中,您可以选择指定subdomain
,否则op
将使用上次使用的子域名。此查找可以通过提供
subdomain
、username
、secret_key
和master_password
来执行初始登录。可以通过提供
account_id
来定位特定帐户。由于这些凭据的非常敏感的性质,强烈建议您只在任何给定时间传递所需的最小凭据。此外,请使用强度等于或高于 1Password 主密码的密钥将这些凭据存储在 Ansible Vault 中。
此查找将 1Password 中的潜在敏感数据存储为 Ansible 事实。如果启用缓存,则事实会受到缓存的影响,这意味着此数据可能以明文形式存储在磁盘或数据库中。
已在
op
2.7.2 版本中测试。
示例
# These examples only work when already signed in to 1Password
- name: Retrieve password for KITT when already signed in to 1Password
ansible.builtin.debug:
var: lookup('community.general.onepassword', 'KITT')
- name: Retrieve password for Wintermute when already signed in to 1Password
ansible.builtin.debug:
var: lookup('community.general.onepassword', 'Tessier-Ashpool', section='Wintermute')
- name: Retrieve username for HAL when already signed in to 1Password
ansible.builtin.debug:
var: lookup('community.general.onepassword', 'HAL 9000', field='username', vault='Discovery')
- name: Retrieve password for HAL when not signed in to 1Password
ansible.builtin.debug:
var: lookup('community.general.onepassword',
'HAL 9000',
subdomain='Discovery',
master_password=vault_master_password)
- name: Retrieve password for HAL when never signed in to 1Password
ansible.builtin.debug:
var: lookup('community.general.onepassword',
'HAL 9000',
subdomain='Discovery',
master_password=vault_master_password,
username='[email protected]',
secret_key=vault_secret_key)
- name: Retrieve password from specific account
ansible.builtin.debug:
var: lookup('community.general.onepassword',
'HAL 9000',
account_id='abc123')
返回值
键 |
描述 |
---|---|
请求的字段数据。 返回:成功 |