我对傀儡很陌生,而且我一直坚持如何通过参数通知一个类。我试图通知我找到的一个类,它使用参数运行update-rc.d:
define myclass::update-rc {
exec { "update-rc_${title}":
command => "update-rc.d ${title} defaults",
cwd => "/tmp",
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:",
refreshonly => true
}
}
我想通知的课程:
class mysecondclass {
file { '/etc/init.d/myscript':
ensure => file,
notify => Class['myclass::update-rc { "myscript": } ']
}
}
失败并显示错误:
Could not find dependent Exec[Myclass::update-rc { "myscript": } ] ...
如果我只是将myclass::update-rc { "myscript": }
放在这个类中,它确实有效:
class mysecondclass {
file { '/etc/init.d/myscript':
ensure => file,
}
myclass::update-rc { "myscript": }
}
但我有点想通知它......有没有办法实现这个目标?
答案 0 :(得分:2)
您可以通过几种方式在傀儡中通知课程:
使用subscribe,您需要从update-rc define:
中更新execexec { "update-rc_${title}":
command => "update-rc.d ${title} defaults",
cwd => "/tmp",
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:",
refreshonly => true,
subscribe => File['/etc/init.d/myscript'],
}
通过通知,您需要更新文件资源:
myclass::update-rc { "myscript": }
file { '/etc/init.d/myscript':
ensure => file,
notify => Myclass::Update-rc["myscript"]
}
这是等效的,但使用链接箭头:
file { '/etc/init.d/myscript':
ensure => file,
} ~>
myclass::update-rc { "myscript": }
请注意它在那里是波浪形而不是正常的箭头。
此外,您应该将您的定义名称从update-rc更新为update_rc:https://docs.puppetlabs.com/puppet/latest/reference/lang_reserved.html#classes-and-defined-types