如何在Puppet中访问应用程序级变量

如何在Puppet中访问应用程序级变量,puppet,Puppet,我知道这个问题可以解释,所以我会问具体的问题 我利用Puppet来检查一些应用程序级别的变量和设置。我遇到的问题是,这些变量中有很多都不是在事实中设置的,比如operatingsystem、hostname、ipaddress等。然后,我很难找到如何利用puppet来创建变量来执行操作 例如,我有一些服务器正在运行不同版本的应用程序,因此我需要能够确定服务器上运行的是哪个版本我该怎么做? 我的第一个想法是,由于标准事实列表中没有提供这些事实,我应该创建我自己的事实,我可以利用这些事实,因此我正在

我知道这个问题可以解释,所以我会问具体的问题

我利用Puppet来检查一些应用程序级别的变量和设置。我遇到的问题是,这些变量中有很多都不是在事实中设置的,比如operatingsystem、hostname、ipaddress等。然后,我很难找到如何利用puppet来创建变量来执行操作

例如,我有一些服务器正在运行不同版本的应用程序,因此我需要能够确定服务器上运行的是哪个版本我该怎么做?

我的第一个想法是,由于标准事实列表中没有提供这些事实,我应该创建我自己的事实,我可以利用这些事实,因此我正在做以下事情:

module_name
|
|---manifests
|---files
|---examples
|---facts.d
   |---script.sh
在my script.sh中,我正在执行linux命令以从应用程序中获取变量。然后在格式中重复它们

key=value
因此,在存储应用程序版本的位置,我会找到该位置,然后回显该版本。然后在运行时,我可以使用$app\ver之类的变量来进行特定的配置更改。比如

app_ver=1.0.8
java_ver=1.7
  • 这是定义外部事实的正确方法吗
  • 是否有获取应用程序级详细信息的标准方法
  • 当puppet应用于给定的应用程序服务器时,script.sh是否会运行,提供事实,然后让puppet主机可以使用这些变量来确定配置更改
  • script.sh文件中的计算是否必须在与该类匹配的每台服务器上运行

  • 是,否,是:pluginsync发生在catalog comp之前[I选项,是:您的服务器可能安装了不同版本的应用程序。因此,基本上您希望在应用puppet module的服务器上安装特定应用程序的版本?是的,以及其他内容。例如,不同版本的应用程序运行不同版本的java。根据java版本,我希望请确保基于该版本的特定设置。请小心,@AtmeshMishra.Puppet函数在构建目录的计算机上的目录构建期间运行。因此,您不能使用
    generate()
    正如您所描述的,与master/agent Puppet设置一起使用,因为在这样的环境中,目录是建立在master上的,而不是建立在目标机器上的。@AtmeshMishra,事实就是这样做的。具体来说,尽管您可以使用基于Ruby的自定义事实来实现,但更简单的外部事实方法非常适合于此参与者用户作业。是,否,是:插件同步发生在目录编译之前[I选项,是:您的服务器可能安装了不同版本的应用程序。因此,基本上您希望在应用puppet module的服务器上安装特定应用程序的版本?是的,以及其他内容。例如,不同版本的应用程序运行不同版本的java。根据java版本,我希望请确保基于该版本的特定设置。请小心,@AtmeshMishra.Puppet函数在构建目录的计算机上的目录构建期间运行。因此,您不能使用
    generate()
    正如您所描述的,与master/agent Puppet设置一起使用,因为在这样的环境中,目录是建立在master上的,而不是建立在目标机器上的。@AtmeshMishra,事实就是这样做的。具体来说,尽管您可以使用基于Ruby的自定义事实来实现,但更简单的外部事实方法非常适合于此参与者这是一份很好的工作。