我曾经使用Puppet很多,从0.x到1.0的版本,然后改变了工作,但现在我又回到了它。木偶中的Hiera对我来说是新手(以及其他一些东西)。根据主机名通过Hiera为节点分配一个类
我正确的理解,根据与Hiera匹配的主机名(或证书名称)模式将类分配给节点组基本上是不可能的?
例如,如果主机是类似于“ntp1.foo.com”的,我就习惯于分配ntp服务器类。在site.pp
中定义直接node
的定义非常简单,我试图将此概念转化为基于Hiera的世界。我有Hiera分配其他类,并希望将所有这些任务合并到一个地方。
我发现这样做的唯一方法是通过一些非Hiera手段设置参数并在Hiera中使用它的值来匹配路径。举例来说,在我的enc
脚本我出口的参数是这样的:
echo "parameters:"
if [ ... ]; do echo " ntpRole: server; else echo " ntpRole: client"; fi
和Hiera我会做这样的事情:
- "roles/ntp-%{ntpRole}"
我想人们也可以通过自定义其实做到这一点。
这工作,但似乎像一个kludge。有更好的/推荐的选择吗?与此
的一个问题是,每一个节点必须有一个值(一切都被分配了一个ntp- 东西类)。这适用于NTP,因为所有的机器都是NTP客户端或服务器,但对于存在的东西它不。
例如:一个web服务器角色。有些机器不会是Web服务器,所以我不想包含那个类,但是对于其他类,我并不想在每个节点文件中维护它,并且不想真正想要在任何地方都有空的*-none
角色类别(例如web-none
与web-server
)。我想要所有名为www*
的机器或基于其他标准来加载roles/web
类。这可以与Hiera完成吗?
我们对此使用外部自定义事实,因此事实将具有该节点属于哪个角色的逻辑,并且在您的hiera中,可以使用该事实来包含角色类。 – Walid