如何让 Rudder 为每个节点设置不同的配置?

如何让 Rudder 为每个节点设置不同的配置?

如何让 Rudder 根据应用指令的节点动态设置配置?

例如 - 管理数百个节点,每个节点都应该有一个文件“storage_password”,其中包含一个 32 位密码,每个节点都是唯一的。

为每个节点创建一个唯一的 [指令、规则、组] 元组显然是错误的,而且看起来很混乱和没有必要。

我考虑过动态变量,即($prefix_${variable_suffix}),其中variable_suffix = "hostA",并且有一个名为的变量prefix_hostA,它将包含密码。variable_suffix 将是节点的主机名。

但是,我不确定这是否可行,或者这是否是更推荐的方法。

变量字典方法似乎这可能是一种方法,但我不确定它是否可以在指令中使用,并且目前无法让它工作。

我该如何进行呢?

我提到了密码大小写,但在其他情况下我也需要类似的行为,比如为每个节点设置 vpn 配置。

背景:公司正在从 Puppet 迁移到 Rudder,我的任务是将 Rudder 与相当简单他们一直在使用 Puppet 的功能。使用 Puppet,上述任务非常容易。

答案1

有几种方法可以做到这一点 - 而且你是对的,为每个节点构建一个规则并不是正确的:)

根据更一般的情况,有以下几种可能性:

节点属性

最常见的方法是使用节点属性,即特定于每个节点且可在指令中使用的属性。文档在此处:https://docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html#_node_properties你是入门手册中的一个用例示例:定义https://docs.rudder.io/get-started/current/node-management/data.html和用法:https://docs.rudder.io/get-started/current/advanced-configuration/apply.html

节点可以对节点属性进行“本地覆盖”,即可在节点文件系统上定义的属性值,而不是在 Rudder Node 细节中定义(也在https://docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html#_node_properties

您可以使用“数据源”舵插件同步来自外部 rest API 的节点属性https://docs.rudder.io/reference/5.0/plugins/datasources.html

来自节点环境的变量

您可以从节点上的内容定义变量,例如文件内容、命令输出等。

您可以使用标准库中的变量技术(在“杂项”类别中)定义此类变量。例如,允许Variable from JSON file (dict)将 json 文件加载为变量,这些变量可以在指令参数中使用语法${variable_prefix.variable_name[json-key][json-subkey]}。还有variable from command,或variable (string)

如果您从技术编辑器构建技术,则可以使用相应的通用方法:在“变量”类别中查找方法,例如“来自命令的变量”,它允许(暂停)从命令的结果创建变量;或者在 json 文件内容的情况下,如您所述,“来自前缀的变量字典”。这些方法也可以在指令中使用。

请注意,使用这些指令时,您需要在使用之前定义变量,因此请检查您的策略顺序: https://docs.rudder.io/reference/5.0/usage/advanced_configuration_management.html#_directives_ordering

模板

如果您需要更多复杂的模板工作,您可以使用 jinja 或 mustache,如下所述:https://docs.rudder.io/rudder-by-example/current/files/advanced-file-templating.html

保险库

在 Rudder 5.0 中,我们添加了一个 Vault 插件,允许从 Vault 安装中获取秘密:https://github.com/Normation/rudder-plugins/tree/master/vault

旧资源

您可以找到一些关于在没有以下情况的情况下如何在被遗忘的时代完成它的信息:https://www.mauras.ch/rudder-fun-with-variables.html

还有一件事

这与您的问题没有直接关系,但由于它是相反的问题,因此可能相关。有时,您想从标准库存数据中没有的节点获取库存信息,然后使用这些数据构建组,您可以使用“节点库存挂钩”扩展库存:https://docs.rudder.io/reference/5.0/usage/advanced_node_management.html#extend-nodes-inventory

希望能帮助到你!

相关内容