community.sops.sops lookup – 读取 SOPS 加密的文件内容

注意

此 lookup 插件是 community.sops 集合 (版本 2.0.0) 的一部分。

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

要安装它,请使用: ansible-galaxy collection install community.sops。您需要其他要求才能使用此 lookup 插件,请参阅 需求 以了解详情。

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

community.sops 0.1.0 中的新增功能

概要

  • 此 lookup 返回 Ansible 控制器文件系统上文件的内容。

  • 此 lookup 需要 sops 可执行文件可在控制器的 PATH 中使用。

需求

以下需求是在执行此 lookup 的本地控制器节点上所需的。

术语

参数

注释

术语

列表 / 元素=字符串 / 必需

要读取的文件的路径。

关键字参数

这描述了 lookup 的关键字参数。这些是在以下示例中的值 key1=value1key2=value2 等:lookup('community.sops.sops', key1=value1, key2=value2, ...)query('community.sops.sops', key1=value1, key2=value2, ...)

参数

注释

age_key

字符串

在 community.sops 1.4.0 中添加

一个或多个可用于解密加密文件的 age 私钥。

调用 SOPS 时,将设置为 SOPS_AGE_KEY 环境变量。

需要 SOPS 3.7.1+。

配置

age_keyfile

路径

在 community.sops 1.4.0 中添加

包含 SOPS 可用于解密加密文件的 age 私钥的文件。

调用 SOPS 时,将设置为 SOPS_AGE_KEY_FILE 环境变量。

默认情况下,SOPS 在您的用户配置目录中查找 sops/age/keys.txt

需要 SOPS 3.7.0+。

配置

aws_access_key_id

字符串

在 community.sops 1.0.0 中添加

用于向 AWS 发出请求的 AWS 访问密钥 ID。

为 SOPS 调用设置环境变量 AWS_ACCESS_KEY_ID

配置

  • INI 条目

    [community.sops]
    aws_access_key_id = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_AWS_ACCESS_KEY_ID

    在 community.sops 1.2.0 中添加

  • 变量:sops_aws_access_key_id

aws_profile

字符串

在 community.sops 1.0.0 中添加

用于向 AWS 发出请求的 AWS 配置文件。

这对应于 SOPS 的 --aws-profile 选项。

配置

  • INI 条目

    [community.sops]
    aws_profile = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_AWS_PROFILE

    在 community.sops 1.2.0 中添加

  • 变量:sops_aws_profile

aws_secret_access_key

字符串

在 community.sops 1.0.0 中添加

用于向 AWS 发出请求的 AWS 密钥。

为 SOPS 调用设置环境变量 AWS_SECRET_ACCESS_KEY

配置

aws_session_token

字符串

在 community.sops 1.0.0 中添加

用于向 AWS 发出请求的 AWS 会话令牌。

为 SOPS 调用设置环境变量 AWS_SESSION_TOKEN

配置

  • INI 条目

    [community.sops]
    aws_session_token = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_AWS_SESSION_TOKEN

    在 community.sops 1.2.0 中添加

  • 变量:sops_session_token

  • 变量:sops_aws_session_token

    在 community.sops 1.2.0 中添加

base64

布尔值

对解析结果进行 Base64 编码。

如果您想在 Ansible 变量中存储二进制数据,请使用此选项。

选项

  • false ← (默认)

  • true

config_path

路径

在 community.sops 1.0.0 中添加

SOPS 配置文件的路径。

如果未设置,SOPS 将从加密或解密的文件开始递归搜索配置文件。

这对应于 SOPS 的 --config 选项。

配置

  • INI 条目

    [community.sops]
    config_path = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_CONFIG_PATH

    在 community.sops 1.2.0 中添加

  • 变量:sops_config_path

empty_on_not_exist

布尔值

设置为 true 时,如果找不到文件,将不会引发错误,而是返回空字符串。

选项

  • false ← (默认)

  • true

enable_local_keyservice

布尔值

在 community.sops 1.0.0 中添加

告诉 SOPS 使用本地密钥服务。

这对应于 SOPS 的 --enable-local-keyservice 选项。

选项

  • false ← (默认)

  • true

配置

  • INI 条目

    [community.sops]
    enable_local_keyservice = false
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_ENABLE_LOCAL_KEYSERVICE

    在 community.sops 1.2.0 中添加

  • 变量:sops_enable_local_keyservice

extract

字符串

在 community.sops 1.9.0 中添加

告诉 SOPS 从 JSON 或 YAML 文件中提取特定密钥。

需要一个字符串,其语法与 SOPS 的 --encrypt 选项的“查询字符串”语法相同,例如 ["somekey"][0]

注意:请适当地转义引号。

input_type

字符串

告诉 SOPS 如何解释加密文件。

默认情况下,SOPS 将根据文件扩展名选择输入类型。如果它检测到文件的类型错误,则可能导致解密失败。

自 community.sops 1.9.0 起,可以使用 ini 值。

选项

  • "binary"

  • "json"

  • "yaml"

  • "dotenv"

  • "ini"

keyservice

列表 / 元素=字符串

在 community.sops 1.0.0 中添加

指定除本地密钥服务之外要使用的密钥服务。

密钥服务必须以 protocol://address 的形式指定,例如 tcp://myserver.com:5000

这对应于 SOPS 的 --keyservice 选项。

配置

  • INI 条目

    [community.sops]
    keyservice = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_KEYSERVICE

    在 community.sops 1.2.0 中添加

  • 变量:sops_keyservice

output_type

字符串

告诉 SOPS 如何解释解密文件。

默认情况下,SOPS 将根据文件扩展名选择输出类型。如果它检测到文件的类型错误,则可能导致解密失败。

自 community.sops 1.9.0 起,可以使用 ini 值。

选项

  • "binary"

  • "json"

  • "yaml"

  • "dotenv"

  • "ini"

rstrip

布尔值

是否删除尾随换行符和空格。

选项

  • false

  • true ← (默认)

sops_binary

路径

在 community.sops 1.0.0 中添加

SOPS 二进制文件的路径。

默认情况下使用 sops

配置

  • INI 条目

    [community.sops]
    binary = VALUE
    

    在 community.sops 1.2.0 中添加

  • 环境变量:ANSIBLE_SOPS_BINARY

    在 community.sops 1.2.0 中添加

  • 变量:sops_binary

注释

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须列在关键字参数之前:lookup('community.sops.sops', term1, term2, key1=value1, key2=value2)query('community.sops.sops', term1, term2, key1=value1, key2=value2)

  • 此查找不支持“通配符” - 请改用 ansible.builtin.fileglob 查找。

另请参阅

另请参阅

community.sops.decrypt 过滤器插件

解密过滤器可用于解密 SOPS 加密的内存数据。

community.sops.sops vars 插件

sops vars 插件可用于加载 SOPS 加密的宿主机或组变量。

community.sops.load_vars

从文件中动态加载 SOPS 加密的变量,在任务中。

示例

- name: Output secrets to screen (BAD IDEA!)
  ansible.builtin.debug:
    msg: "Content: {{ lookup('community.sops.sops', item) }}"
  loop:
    - sops-encrypted-file.enc.yaml

- name: Add SSH private key
  ansible.builtin.copy:
    # Note that rstrip=false is necessary for some SSH versions to be able to use the key
    content: "{{ lookup('community.sops.sops', user + '-id_rsa', rstrip=false) }}"
    dest: /home/{{ user }}/.ssh/id_rsa
    owner: "{{ user }}"
    group: "{{ user }}"
    mode: 0600
  no_log: true  # avoid content to be written to log

- name: The file file.json is a YAML file, which contains the encryption of binary data
  ansible.builtin.debug:
    msg: "Content: {{ lookup('community.sops.sops', 'file.json', input_type='yaml', output_type='binary') }}"

返回值

描述

返回值

列表 / 元素=字符串

解密后的文件内容。

返回:成功

作者

  • Edoardo Tenani (@endorama)

提示

每个条目类型的配置条目具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。