我在木偶里有两节课。
这是第一个:
class nagios::is_production {
file { '/etc/puppetlabs/facter/':
ensure => directory,
}
file { '/etc/puppetlabs/facter/facts.d/':
ensure => directory,
}
file { '/etc/puppetlabs/facter/facts.d/production.txt':
ensure => file,
content => epp('nagios/production.epp')
}
}
这会创建一个自定义事实(生产=是/否,基于节点名称) 这个类本身就能正确地分配这个事实。
第二节课:
class nagios::client {
if $facts[production] =~ yes {
@@nagios_host {"${::hostname}":
ensure => present,
address => $::ipaddress,
hostgroups => "production, all-servers",
notifications_enabled => $notifications_enabled,
use => 'generic-server',
}
} else {
@@nagios_host {"${::hostname}":
ensure => present,
address => $::ipaddress,
hostgroups => "non-production, all-servers",
notifications_enabled => $notifications_enabled,
owner => root,
use => 'generic-server',
}
}
}
这将为主机创建导出的资源,并将其添加到生产/非生产主机组。
如果存在自定义事实,则会正确地使用主机组创建主机。
我创建了一个第3课来吸引这2个,只是为了让自己更容易跟踪它:
class nagios::agent {
Class['nagios::is_production']->Class['nagios::client']
include nagios::is_production
include nagios::client
}
这似乎应该使::is_production
在::client
之前运行。当我在puppet run的节点上包含这个类时,我收到了这个错误:
错误:无法从远程服务器检索目录:SERVER上的错误500:服务器错误:评估错误:左匹配操作数必须生成字符串值。获得了Undef值。在节点上的/etc/puppetlabs/code/environments/production/modules/nagios/manifests/client.pp:3:6
因此事实似乎没有设置导致主机导出失败。
我错过了什么?
我想这样做: 如果域名包含'某事' 生产= YES 其他 生产=无
然后在nagios模块中, if $ facts [生产] =〜是 分配给生产主机组。
Bash:
#!/bin/bash
if [[ $(hostname) =~ '512' ]] ; then
echo production=yes
else
echo production=no
fi
我希望能够在这里使用$ facts [something]来创建基于OS和IP等事物的其他事实。
我在这里阅读:Custom Facts Walkthrough
但我无法理解自定义事实加载路径,因为我没有该目录。我对傀儡很新......
堆叠溢出也是新的......我这样做了吗?
由于
答案 0 :(得分:1)
事实是在pluginsync期间生成的。由于您在目录执行期间尝试放置外部事实,因此在插件同步之后的目录编译期间不能使用它。
您需要删除URI content://com.google.android.apps.photos.contentprovider/-1/2/content%3A%2F%2Fmedia%2Fexternal%2Ffile%2F47/ORIGINAL/NONE/864252053
类并将外部事实直接放在模块中以利用pluginsync。它应该位于您的模块结构中,如下所示:
nagios::production
然后在pluginsync期间复制外部事实,并生成事实。然后在目录编译期间可以使用它。 Facter还希望您的nagios
|__facts.d
|__production.txt
成为production.txt
对。
点击此处查看有关正确使用外部事实的更多信息:https://docs.puppet.com/facter/3.5/custom_facts.html#external-facts