将 200 个环境变量的列表系统地导出给 Puppet Agent 节点中的所有用户的最佳方法是什么,Hiera 有用



我有一个RPM,我想用Puppet管理它的安装。 在安装时,它取决于 200 个环境变量的值,这些值因系统而异,并且可能会随时间而变化。 最好的方法是什么?在 Puppet 中使用 Hiera 或 ERB 模板来更改和版本控制环境是否更好?

我是Puppet的新手,但对如何做到这一点有一些想法。我想知道导出如此大量环境变量的最有效方法。

您的第一个长期最佳选择是重新设计 RPM 打包和/或打包软件本身,使其安装完全独立于任何环境变量。 这绝对是常态,其他任何事情对大多数人来说都是非常成问题的,尽管是傀儡。 该软件可以在环境变量的影响下随心所欲地调整其运行时行为,但其安装应该对它们不敏感。

然而,我预计你会否认这种可能性。 在这种情况下,您需要了解,无论您如何配置系统以在用户会话中提供环境变量,Puppet 都会通过控制其启动的外部命令(例如包管理命令)的环境来执行良好的安全实践。 因此,如果您需要通过环境变量影响 RPM 的安装,您将无法使用Package资源来管理(安装)RPM。

我建议使用 Puppet 来管理 RPM 的安装脚本,该脚本导出所有想要的环境变量,然后运行yum来安装 RPM。 或者,如果必须,还可以管理 RPM 文件的本地副本,并让您的脚本使用rpm来安装它。 如果您只需要在安装时使用环境变量,那么它们可以直接进入脚本;否则,您可能希望通过/etc/profile.d/software_name.sh/etc/profile.d/software_name.csh中的环境设置文件来设置它们。 无论哪种方式,模板(无论是 ERB 还是 EPP 样式)都是编写包含环境变量定义的文件的好方法。 然后在适当时使用Exec资源运行脚本。

希拉是一个单独的问题。 请注意,通常,Hiera 仅在目录编译期间在主服务器上使用,而不在客户端计算机上使用。 您绝对可以将环境变量值存储在外部 Hiera 数据文件中,并在目录构建时查找它们。 我肯定会推荐它。 根据您设置的确切方式,它可以使我建议的模板更容易实现。 例如,您可以为模板提供从变量名称到变量值的哈希,并迭代它以发出所有需要的变量定义 - 比清单文件中的 200 行单独的变量定义和相应的 200 行或更多行要好得多。

相关内容

  • 没有找到相关文章

最新更新