Answers:
通知的替代方法是订阅:
file { "/etc/sshd_config":
source => "....",
}
service { sshd:
ensure => running,
subscribe => File["/etc/sshd_config"],
}
区别在于从另一端描述了该关系。例如,您可以使apache订阅/etc/apache/httpd.conf,但是您将使一个vhost文件通知apache,因为您的apache类不会知道您拥有的每个vhost。
类似的双端情况适用于require和before。这只是在特定情况下更有意义的问题。
正如乍得所提到的,如果您发现p不断地尝试启动服务,那么您需要添加一个模式参数,这是一个正则表达式,可应用于进程列表。默认情况下,puppet将停止并开始重新启动服务。如果添加“ hasrestart => true”,则它将使用“ restart”参数中指定的命令来重新启动服务。
看来我发现了一些东西:
file { "/etc/sshd_config":
source => "....",
notify => Service[sshd]
}
service { sshd:
ensure => running
}
我们将看到它如何工作。无论如何,欢迎您提出关于该主题的想法。
(我知道这是一个非常古老的问题,但只是想我会以一种(我认为)更简单的方法投入我的两分钱)
也可以随意使用箭头符号:
file { "/etc/sshd_config":
source => "....",
} ~>
service { sshd:
ensure => running
}
要么
File['/etc/sshd_config'] ~> Service['sshd']
有多个等效的符号:
通知:
file { '/etc/sshd_config':
notify => Service[sshd],
}
service { sshd:
ensure => running
}
订阅:
file { '/etc/sshd_config':
...
}
service { sshd:
ensure => running,
subscribe => File['/etc/sshd_config'],
}
箭头符号:
File['/etc/sshd_config'] ~> Service['sshd']
链接声明
file { '/etc/sshd_config':
...
}
~> service { sshd:
ensure => running,
}
如果要触发reload
而不是restart
,请调整服务声明:
service { sshd:
ensure => running,
restart => 'pkill -HUP sshd', # if service support such reload
}