我正在尝试提出一个 puppet 模块sensu_client
,用于在实例中安装和配置 sensu 客户端。
模块目录结构如下:
.
|-- examples
|-- files
| |-- client-ssl
| |-- custom_plugins
| | |-- common
| | `-- <env>
| `-- default_plugins
|-- manifests
|-- spec
| `-- classes
`-- templates
`-- custom_plugins
|-- common
`-- <env>
文件夹及其描述如下:
files/default_plugins/
:来自互联网的默认插件
files/custom_plugins/common
:我们编写的插件,与环境无关
files/custom_plugins/<env>
:我们编写的特定于环境的插件
对于模板目录有同样的想法。
如果可能的话,我想将所有这些插件复制到/etc/sensu/plugins
客户端的同一个文件夹中,因为在我们的其他环境中(我们使用 ansible 进行管理),我们已将 sensu 插件位置标准化为/etc/sensu/plugins
文件夹。
当我运行我编写的清单时,收到以下错误消息:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Cannot alias File[copy common custom plugins] to ["/etc/sensu/plugins/"] at /etc/puppetlabs/code/environments/<env>/modules/sensu_client/manifests/config.pp:46; resource ["File", "/etc/sensu/plugins/"] already declared at /etc/puppetlabs/code/environments/<env>/modules/sensu_client/manifests/config.pp:46 at /etc/puppetlabs/code/environments/<env>/modules/sensu_client/manifests/config.pp:46:3 on node <fqdn>
现在这很明显,因为我有几个文件块,我正试图将文件/模板复制到/etc/sensu/plugins
目录中。
你们能告诉我完成此操作的推荐方法吗?
另一件我正在尝试但未能完成的小事是这个。我想生成/etc/sensu/conf.d/client.json
类似这样的文件
{
"client": {
"name": "<hostname>",
"address": "<ip address>",
"subscriptions": ["<hostname>", "all", "<env>", "<service>"]
}
}
我们在两个环境中运行 puppet,命名约定遵循这种模式。
环境 1:FQDN 为<env>-<service><index>.<domain-name1>.tld
且主机名是<env>-<service><index>
环境 2:FQDN 为<service><index>.<domain-name2>.tld
且主机名是<service><index>
我的模板文件相同,如下所示:
{
"client": {
"name": "<%= @hostname %>",
"address": "<%= @ipaddress %>",
"subscriptions": <%= @pr_subscription_array %>
}
}
我使用这个块在清单中获取 pr_subscription_array :
$pr_service_name = regsubst("${facts[hostname]}", '^(.*?)-([a-zA-Z]*)[0-9]*', '\2')
$pr_subscription_array = [ "${facts[hostname]}", "all", "${facts['agent_specified_environment']}", "$pr_service_name" ]
这将生成如下订阅:"subscriptions": ["<hostname>", "all", "<env>", "<service><index>"]
不知为何服务字段无法正常显示。它带有索引号。关于如何使用 puppet 完成此操作,您有什么建议吗?
提前致谢。