community.sops.decrypt 过滤器 – 解密 SOPS 加密的数据

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.sops。您需要进一步的要求才能使用此过滤器插件,请参阅 要求 以了解详细信息。

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

community.sops 1.1.0 中的新功能

概要

  • 解密 SOPS 加密的数据。

  • 允许解密由任意来源提供的数据。

  • 请注意,由于 Ansible 延迟评估表达式,最好使用 ansible.builtin.set_fact 将评估结果存储在一个事实中,以避免每次使用该表达式时都重新计算该值。

要求

本地控制器节点上需要以下要求来执行此过滤器。

输入

这描述了过滤器的输入,即 | community.sops.decrypt 之前的值。

参数

注释

输入

字符串 / 必需

要解密的数据。

关键字参数

这描述了过滤器的关键字参数。这些是在以下示例中 key1=value1key2=value2 等等的值:input | community.sops.decrypt(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

aws_profile

字符串

在 community.sops 1.0.0 中添加

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

这对应于 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

config_path

路径

在 community.sops 1.0.0 中添加

SOPS 配置文件的路径。

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

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

decode_output

布尔值

是否将输出解码为字节。

output_type=binary,并且已知该文件不包含 UTF-8 编码的文本时,最好将其设置为 false,以防止使用 UTF-8 解码损坏数据。

选项

  • false

  • true ←(默认)

enable_local_keyservice

布尔值

在 community.sops 1.0.0 中添加

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

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

选项

  • false ←(默认)

  • true

input_type

字符串

告诉 SOPS 如何解释加密数据。

由于我们没有文件名,因此没有自动检测。默认情况下,SOPS 被告知将输入视为 YAML。如果这是错误的,请将此选项设置为正确的值。

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

选项

  • "二进制"

  • "json"

  • "yaml" ← (默认)

  • "dotenv"

  • "ini"

密钥服务

列表 / 元素=字符串

在 community.sops 1.0.0 中添加

指定要与本地密钥服务一起使用的其他密钥服务。

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

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

output_type

字符串

告知 SOPS 如何解释解密后的文件。

请注意,输出始终是文本或字节,具体取决于 decode_output 的值。 要解析生成的 JSON 或 YAML,请使用相应的过滤器,例如 ansible.builtin.from_jsonansible.builtin.from_yaml

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

选项

  • "二进制"

  • "json"

  • "yaml" ← (默认)

  • "dotenv"

  • "ini"

rstrip

布尔值

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

选项

  • false

  • true ←(默认)

sops_binary

路径

在 community.sops 1.0.0 中添加

SOPS 二进制文件的路径。

默认使用 sops

另请参阅

另请参阅

community.sops.sops 查找插件

读取 SOPS 加密的文件内容。

community.sops.sops 变量插件

加载 SOPS 加密的变量文件。

community.sops.load_vars

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

示例

- name: Decrypt file fetched from URL
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Fetch file from URL
      ansible.builtin.uri:
        url: https://raw.githubusercontent.com/getsops/sops/master/functional-tests/res/comments.enc.yaml
        return_content: true
      register: encrypted_content

    - name: Show encrypted data
      debug:
        msg: "{{ encrypted_content.content | ansible.builtin.from_yaml }}"

    - name: Decrypt data and decode decrypted YAML
      set_fact:
        decrypted_data: "{{ encrypted_content.content | community.sops.decrypt | ansible.builtin.from_yaml }}"

    - name: Show decrypted data
      debug:
        msg: "{{ decrypted_data }}"

返回值

描述

返回值

字符串

解密后的数据,以文本形式(decode_output=true,默认)或二进制字符串形式(decode_output=false)返回。

返回: 成功

作者

  • Felix Fontein (@felixfontein)

提示

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