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

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.sops。要使用此 vars 插件,您需要其他要求,请参阅 需求 获取详细信息。

要在 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 进行其他配置。

  • 隐藏文件将被忽略。

需求

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

参数

参数

注释

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

控制何时可以执行此变量插件。

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

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

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

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

选项

  • "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 过滤器插件

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

community.sops.load_vars

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

作者

  • Edoardo Tenani (@endorama)

提示

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