如果托管系统中没有可用的主机和端口,是否有任何现成的方法/自定义事实/等可以让 Puppet 做出不同的响应?
例如,我有一些产品使用多个目录来读取用户信息。
通常,我希望最快和最近的服务器列在最前面。如果不可用,我希望我的模块能够重写配置文件以转到列表中较低的条目。
答案1
那么这是通过模板中的配置变量来交换某些东西吗?
我认为最好的方法是用 Ruby 编写一个自定义事实来执行速度和可达性测试,然后使用该自定义事实在模板中设置字符串。这对您的用例来说合理吗?
答案2
看看 puppet 的 stdlib。它允许您将自定义数据或脚本放入/etc/facter/facts.d
(描述)。
因此,您可以使用一个小脚本来/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