有没有任何现成的方式/自定义的事实/等,如果一个给定的主机和端口不能从pipe理系统提供Puppet响应不同?
例如,我有一些产品使用多个目录来阅读用户信息。
一般来说,我想首先列出最快和最接近的服务器。 如果它不可用,我想我的模块能够重写configuration文件去列表中较低的条目。
所以这是通过在模板中的configurationvariables交换的东西?
我认为最好的方法是在Ruby中编写一个自定义事实,进行速度和可访问性testing,然后使用该自定义事实来设置模板中的string。 这对你的用例看起来是否合理?
看看木偶的stdlib。 它允许您将自定义数据或脚本放在/etc/facter/facts.d )中。
所以你可以有一个小脚本/etc/facter/facts.d/neighbour.sh来添加一个新的variables/etc/facter/facts.d/neighbour.sh facter -p :
#! /bin/sh if ping -nc 1 dirserver.fnqd > /dev/null; then echo 'dirserver_available=true' else echo 'dirserver_available=false' fi
通过一些脚本,您可以按照延迟的顺序添加自定义事实,如dirserver_1 , dirserver_2等。