community.sops.sops vars – 加载 SOPS 加密的变量文件

注意

这个变量插件是 community.sops 集合(版本 2.0.0)的一部分。

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

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

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

community.sops 0.1.0 中的新功能

概要

  • 将加密的 YAML 文件加载到 group_vars/host_vars/ 目录中的相应组/主机中。

  • 文件在读取之前被解密,使得此插件成为 ansible.builtin.host_group_vars 插件的有效伴侣。

  • 文件限制为 .sops.yaml.sops.yml.sops.json 扩展名,除非使用 valid_extensions 进行其他配置。

  • 隐藏文件将被忽略。

要求

执行此变量的本地控制器节点上需要满足以下要求。

参数

参数

注释

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 中添加

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 中添加

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 中添加

cache

布尔值

在 community.sops 0.2.0 中添加。

是否缓存解密的文件。

如果禁用缓存,则几乎每个任务都会解密文件。这会非常慢!

只有在 playbook 运行期间修改了变量文件,并希望在下一个任务中可以使用更新后的结果时,才禁用缓存。

请注意,设置 stage=inventory 与设置 cache=true 的效果相同:变量只会加载一次(在加载清单期间),并且不会为每个任务调用 vars 插件。

选项

  • 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 中添加

disable_vars_plugin_temporarily

布尔值

在 community.sops 1.3.0 中添加。

临时禁用此插件。

如果应该在不解密密钥的情况下运行 ansible-inventory(例如在 AWX 中),则此选项很有用。

选项

  • 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 中添加

handle_unencrypted_files

字符串

在 community.sops 1.8.0 中添加。

如何处理与 valid_extensions 中的扩展名匹配但未进行 SOPS 加密的文件。

默认值 error 将产生错误。

skip 将简单地跳过这些文件。这需要 SOPS 3.9.0 或更高版本。

warn 将跳过这些文件并发出警告。这需要 SOPS 3.9.0 或更高版本。

请注意,如果 SOPS 使用的存储无法解析该文件,例如因为该文件虽然具有文件扩展名但不是有效的 JSON/YAML/…文件,则此选项将无济于事。对于默认扩展名以外的扩展名,SOPS 使用二进制存储,该存储尝试将文件解析为 JSON。

选项

  • "skip"

  • "warn"

  • "error" ← (默认)

配置

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_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 中添加

stage

字符串

在 community.sops 0.2.0 中添加。

控制何时执行此 vars 插件。

将此选项设置为 all 将在导入清单后以及任务需要时运行 vars 插件。

将此选项设置为 task 将仅在任务需要时运行 vars 插件。

将此选项设置为 inventory 将仅在解析清单后运行 vars 插件。

如果省略此选项,则使用全局 RUN_VARS_PLUGINS 配置来确定何时执行 vars 插件。

选项

  • "all"

  • "task"

  • "inventory"

配置

valid_extensions

列表 / 元素=字符串

查找“变量”文件时检查所有这些扩展名。

这些文件必须是 SOPS 加密的 YAML 或 JSON 文件。

默认情况下,当插件遇到与这些扩展名匹配但未进行 SOPS 加密的文件时,将产生错误。可以使用 handle_unencrypted_files 选项控制此行为。

默认值: [".sops.yml", ".sops.yaml", ".sops.json"]

配置

  • INI 条目

    [community.sops]
    valid_extensions = .sops.yml, .sops.yaml, .sops.json
    

    在 community.sops 1.7.0 中添加。

  • 环境变量:ANSIBLE_VARS_SOPS_PLUGIN_VALID_EXTENSIONS

    在 community.sops 1.7.0 中添加。

参见

另请参阅

community.sops.sops 查找插件

sops 查找可用于解密 SOPS 加密的文件。

community.sops.decrypt 过滤器插件

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

community.sops.load_vars

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

作者

  • Edoardo Tenani (@endorama)

提示

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