如何使用Hiera将模块分配给Puppet中的节点?

我决定从一个默认nodes.pp切换到Hiera后端来pipe理Puppet中的节点并将模块分配给节点。

我们使用主机名称:

nyc-apache-prod-01 was-mysql-tst-01 

这是我们的hiera.yaml和hierdata目录结构:

 # cat hiera.yaml :backends: - yaml :hierarchy: - environment/tst/%{::hostname} - environment/tst - %{::osfamily} - common :logger: console :yaml: :datadir: '/etc/puppet/hieradata' # find hieradata hieradata hieradata/RedHat.yaml hieradata/OracleRAC.yaml hieradata/common.yaml hieradata/environment hieradata/environment/dev hieradata/environment/tst.yaml hieradata/environment/acc hieradata/environment/dev.yaml hieradata/environment/acc.yaml hieradata/environment/tst hieradata/environment/tst/nyc-ks-tst-02.yaml hieradata/environment/tst/nyc-ks-tst-01.yaml hieradata/environment/prd hieradata/environment/prd.yaml 

问题是环境需要在每个节点上的/etc/puppet/puppet.conf中设置为environment = tst。 我可以编写一个模块来根据服务器的主机名来做到这一点,但我不确定这是在单独的环境中组织服务器的最佳方式。

  • 为不同的服务器configuration不同的Puppet模块,最好的办法是什么?
  • 将特定模块添加到一组服务器的最佳方式是什么?
  • 例如我有10个Apache Web服务器…我想拥有所有这些Apache节点,无论他们是否具有Apache模块的tst / acc / dev / prd。

我想避免的是在每个单独的服务器的类列表中添加一个类的列表。 这就是我们首先从单个node.pp移动到Hiera后端的原因。

你可能想分配一个angular色给服务器,并用它来提供包。

例如; 在/etc/facter/facts.d中,你放置了一个设置angular色事实的文件。 您可以将其用作Hiera层次结构级别,然后将模块分配给服务器。

从来没有尝试过,但我认为这可以工作.. 🙂