我正在尝试安装PuppetDB Module。其中一部分捆绑了一个模块,用于安装我也在使用的一些必需的 Postgres 实例。
我们主要使用 heira 来配置角色和设置各种属性。
我的配置足够长,如果我添加
roles:
- role::postgresql_puppetdb
对于主机名 hiera yaml 文件,它将被拾取并推出一个基本的 postgres 实例。
我一直坚持设置特定的 postgresql.conf 变量。例如我试过
roles:
- role::postgresql_puppetdb
- wal_level: hot_standby
但是,这确实会在后续代理运行时被推送。
我希望有人可能已经尝试以这种方式对 PuppetDB 配置进行建模并指出我做错了什么。
为了让 Puppet 在 Hiera 中查找类参数(自 3.0.0 起默认执行此操作),这些参数需要指定为简单的键值对,而不是复杂的数据类型。
这是您如何在模块中指定
datadir
类的参数以指向 Postgres 的备用数据目录:postgresql::server
puppetlabs-postgresql
但是,我认为这不是您所需要的。您想要指定 Postgres 配置参数,您需要使用
postgresql::server::config_entry
定义的类型。目前没有办法在 Hiera 中查找类型参数,这仅适用于类参数。因此,要么参数化你的
role::postgresql_puppetdb
类,以便可以将类参数传递给它,然后将其输入到postgresql::server::config_entry
声明中,要么将create_resources()
函数与要应用的 Postgres 配置设置一起使用hiera_array()
或hiera_hash()
查找要应用的 Postgres 配置设置。第一种方法的示例:
然后在希拉。
这显然有点不灵活,因为您还需要公开
postgresql
该类通过您的类提供的每个可调参数和配置设置role::postgresql_puppetdb
。当然,如果您知道只需要像这样公开几个可调参数,这对您来说可能就足够了。第二种方法的示例:
然后在希拉:
等等。这更灵活,允许您在所需的每个层次结构级别上设置任意 Postgres 参数。当然,在这种情况下,只有在包含类时才会咨询 Hiera 以获取这些配置设置
role::postgresql_puppetdb
,但没有什么能阻止您将 hiera_hash-create_resources 组合放在其他角色中,可能是role::postgresql
.我希望这是可以理解和连贯的。上面的内容当然是未经测试的,但我们使用这种策略(create_resources、hiera_hash)来管理本地和系统帐户、repos、sudoers 规则、Tomcat 实例等。明天我不那么累的时候会重新讨论这个问题。
但是请看一下 Puppet-Ask 上的这个绝妙问题:https ://ask.puppetlabs.com/question/1655/an-end-to-end-roleprofile-example-using-hiera/
它通过基于 HAproxy 的类似设置。非常好理解。