可能有节点本地配置文件
Possible to have node local configuration file
是否可以使用 puppet master 使用的节点本地配置文件 (hiera?) 在 puppet 运行 期间编译更新列表?
我的用例是 puppet 将对用户 .bashrc 文件和用户主目录进行更改,但我希望能够控制哪些用户使用实际节点本身上的文件,而不是 site.pp清单。
is it possible to use a node local config file (hiera?) that is used
by the puppet master to compile the update list during a puppet run?
当然,有多种方法可以做到这一点。
My usecase is that puppet will make changes to users .bashrc file and
to the users home directory, but I would like to be able to control
which users using a file on the actual node itself, not in the site.pp
manifest.
主节点拥有的关于目标节点当前状态的所有信息都以节点事实的形式出现,由节点在其目录请求中提供给它。本地控制下的本地文件,其内容应用于影响节点自身目录的内容,将属于该类别。 Puppet 支持结构化事实(其值具有任意嵌套列表 and/or 哈希结构的事实),这应该足以将所需数据传递给主控。
有两种不同的方法可以将您自己的事实添加到 Puppet 默认收集的事实中:
为Facter写一个Ruby插件,让Puppet自动分发到节点,或者
用您选择的语言编写外部事实程序或脚本,
并作为普通文件资源分发到节点
任何一种都可以读取您的数据文件并以适当的形式发出相应的事实(或多个事实)。 Facter 文档包含 details about how to write facts of both kinds; "custom facts"(在 Ruby 中编写的 Facter 插件)集成得更干净一些,但 "external facts" 几乎同样有效,并且对于不熟悉 Ruby 的人来说更容易。
原则上,您还可以编写一个完整的自定义类型和随附的提供程序,并让在目标节点上运行的提供程序负责读取适当的本地文件。这将需要更多的工作,并且需要以与您描述的略有不同的方式构建解决方案。我不推荐它来解决你的问题,但我提到它是为了完整性。
是否可以使用 puppet master 使用的节点本地配置文件 (hiera?) 在 puppet 运行 期间编译更新列表?
我的用例是 puppet 将对用户 .bashrc 文件和用户主目录进行更改,但我希望能够控制哪些用户使用实际节点本身上的文件,而不是 site.pp清单。
is it possible to use a node local config file (hiera?) that is used by the puppet master to compile the update list during a puppet run?
当然,有多种方法可以做到这一点。
My usecase is that puppet will make changes to users .bashrc file and to the users home directory, but I would like to be able to control which users using a file on the actual node itself, not in the site.pp manifest.
主节点拥有的关于目标节点当前状态的所有信息都以节点事实的形式出现,由节点在其目录请求中提供给它。本地控制下的本地文件,其内容应用于影响节点自身目录的内容,将属于该类别。 Puppet 支持结构化事实(其值具有任意嵌套列表 and/or 哈希结构的事实),这应该足以将所需数据传递给主控。
有两种不同的方法可以将您自己的事实添加到 Puppet 默认收集的事实中:
为Facter写一个Ruby插件,让Puppet自动分发到节点,或者
用您选择的语言编写外部事实程序或脚本, 并作为普通文件资源分发到节点
任何一种都可以读取您的数据文件并以适当的形式发出相应的事实(或多个事实)。 Facter 文档包含 details about how to write facts of both kinds; "custom facts"(在 Ruby 中编写的 Facter 插件)集成得更干净一些,但 "external facts" 几乎同样有效,并且对于不熟悉 Ruby 的人来说更容易。
原则上,您还可以编写一个完整的自定义类型和随附的提供程序,并让在目标节点上运行的提供程序负责读取适当的本地文件。这将需要更多的工作,并且需要以与您描述的略有不同的方式构建解决方案。我不推荐它来解决你的问题,但我提到它是为了完整性。