define nagios::iconf( $host_name='', $ip='', $short_alias='',$service_name='',$remote_host_name='',$port=''){
$reconfigure = "/usr/local/nagios/etc/import/${host_name}.cfg"
concat{$reconfigure:
owner => nagios,
group => nagios,
mode => 755
}
concat::fragment{"hosttemplate":
target => $reconfigure,
source => template('nagios/host.erb'),
order => 01,
}
concat::fragment{"servicetemplate":
target => $reconfigure,
ensure => template("nagios/${service_name}.erb"),
order => 15
}
}
include nagios
当我在site.pp中声明
时node "blahblahhostname"{
nagios::iconf{'name1':
host_name => 'localhost'
remote_host_name => 'blahblah1',
ip => '32.232.434.323',
port => '111',
short_alias => 'random',
service_name => 'servicename1'
}
nagios::iconf{'name2':
host_name => 'localhost'
remote_host_name => 'blahblah1',
ip => '32.232.434.323',
port => '111',
short_alias => 'random',
service_name => 'servicename2'
}
include nagios
}
我收到重复声明错误。我哪里出错了?
答案 0 :(得分:1)
问题在于
concat{"/usr/local/nagios/etc/import/localhost.cfg"
owner => nagios,
group => nagios,
mode => 755
}
由于host_name
,定义了两次。当您在清单中调用define
类型时,会导致重复警告。
您必须在define
类型之外定义一次。可以在班级或manifests
本身。类似的东西:
concat{"/usr/local/nagios/etc/import/localhost.cfg"
.....
.....
然后,其余代码,即concat::fragments
可以进入define
类型。
define nagios::iconf( $host_name='', $ip='', $short_alias='',$service_name='',$remote_host_name='',$port=''){
$reconfigure = "/usr/local/nagios/etc/import/${host_name}.cfg"
concat::fragment{"hosttemplate":
target => $reconfigure,
source => template('nagios/host.erb'),
order => 01,
}
concat::fragment{"servicetemplate":
target => $reconfigure,
ensure => template("nagios/${service_name}.erb"),
order => 15
}
}
答案 1 :(得分:0)
我必须承认,我不确定您的确在做什么,以及您的concat::fragment
定义是否也可以,但重复声明错误是两次声明nagios::iconf
的结果没有这些定义的唯一名称。您使用空字符串''
两次。
修改强>:
如果concat::fragment
是define
,那么concat::fragment{"hosttemplate":
和concat::fragment{"servicetemplate":
可能是您遇到问题的原因。
当两次声明nagios::iconf
时,木偶会尝试两次声明这些片段。 他们的名字不是唯一的。试试concat::fragment{"hosttemplate $name":
和concat::fragment{"servicetemplate $name":
concat{$reconfigure:
也是define
?试试concat{"$reconfigure $name":
。