community.sops.load_vars 模块 – 从文件中加载 SOPS 加密变量,在任务中动态加载

注意

此模块是 community.sops 集合(版本 2.0.0)的一部分。

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

要安装它,请使用: ansible-galaxy collection install community.sops。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求

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

community.sops 0.1.0 中的新功能

概要

  • 在任务运行时期间从文件中动态加载 SOPS 加密的 YAML/JSON 变量。

  • 要将包含的变量分配给与 inventory_hostname 不同的主机,请使用 delegate_to 并设置 delegate_facts=true

注意

此模块具有相应的 操作插件

要求

执行此模块的主机需要以下要求。

参数

参数

注释

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 选项。

enable_local_keyservice

布尔值

在 community.sops 1.0.0 中添加

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

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

选项

  • false ← (默认)

  • true

expressions

字符串

此选项控制如何处理加载文件中值的 Jinja2 表达式。

如果设置为 ignore,则不会评估表达式,而是将其视为常规字符串。

如果设置为 evaluate-on-load,则将在执行此模块时(换句话说,在加载文件时)评估表达式。

遗憾的是,非核心模块无法以“不安全”的方式处理表达式,换句话说,仅在使用时才评估它们。这只能通过 ansible.builtin.include_vars 实现,但遗憾的是它无法处理 SOPS 加密的文件。

选项

  • "ignore" ← (默认)

  • "evaluate-on-load"

file

路径

应从中加载变量的文件名。

如果路径是相对路径,它将在角色的 vars/ 子目录中或相对于 playbook 查找该文件。

keyservice

列表 / 元素=字符串

在 community.sops 1.0.0 中添加

指定要使用的本地密钥服务旁边的密钥服务。

必须以 协议://地址 的形式指定密钥服务,例如 tcp://myserver.com:5000

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

名称

字符串

用于赋值包含变量的变量名称。

如果省略(null),它们将被设置为顶层变量。

sops_binary

路径

在 community.sops 1.0.0 中添加

SOPS 二进制文件的路径。

默认使用 sops

属性

属性

支持

描述

action

支持: 完全

表示此项具有对应的操作插件,因此某些选项可以在控制器上执行。

async

支持:

此操作完全在控制器上运行。

支持与 async 关键字一起使用。

check_mode

支持: 完全

可以在 check_mode 中运行并返回已更改状态的预测,而无需修改目标。

diff_mode

支持: 不适用

此操作不会修改状态。

在 diff 模式下,将返回有关已更改内容(或在 check_mode 中可能需要更改的内容)的详细信息。

facts

支持: 完全

操作返回一个 ansible_facts 字典,它将更新现有的主机事实。

另请参阅

另请参阅

ansible.builtin.set_fact

设置主机变量和事实。

ansible.builtin.include_vars

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

控制任务的运行位置:委托和本地操作

有关任务委托的更多信息。

community.sops.sops 查找插件

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

community.sops.decrypt 过滤器插件

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

community.sops.sops 变量插件

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

示例

- name: Include variables of stuff.sops.yaml into the 'stuff' variable
  community.sops.load_vars:
    file: stuff.sops.yaml
    name: stuff
    expressions: evaluate-on-load  # interpret Jinja2 expressions in stuf.sops.yaml on load-time!

- name: Conditionally decide to load in variables into 'plans' when x is 0, otherwise do not
  community.sops.load_vars:
    file: contingency_plan.sops.yaml
    name: plans
    expressions: ignore  # do not interpret possible Jinja2 expressions
  when: x == 0

- name: Load variables into the global namespace
  community.sops.load_vars:
    file: contingency_plan.sops.yaml

返回值

通用返回值记录在这里,以下是此模块独有的字段

描述

ansible_included_var_files

列表 / 元素=字符串

成功包含的文件列表

返回: 成功

示例: ["/path/to/file.sops.yaml"]

作者

  • Felix Fontein (@felixfontein)