1
通知服务,我已经创建木偶 - 中定义的资源
2个定义的资源下载的应用程序,并将其设置为服务
的服务
我想要1在2之前运行,因为1会创建2创建配置文件的目录。
但我还需要的是,如果配置文件更新,它应该通知1中的服务进行刷新。这是我遇到问题的地方,因为我似乎无法访问该服务。
这里是我使用的示例代码:
class start {
resource::run_service{'start'}
->
resource::conf:service_conf{'conf'}
}
define resource::run_service {
# Does some things
service { 'main':
ensure => 'running',
enable => true
}
}
define resource::conf::service_conf {
file { 'file.config':
ensure => file,
path => '/some/path/',
owner => 'user',
group => 'group',
mode => 0600,
content => template('templates/templatefile.erb'),
notify => Resource::Run_service::Service['main'], # What is the proper way to do this?
}
}
这是我从木偶出现错误:
错误:服务器错误400:无法检索从远程服务器的目录:无效的关系:因为Resource :: Run_service :: Service ['main']似乎不在目录
我可以这样做:
notify => Resource::Run_service['main'],
但它给了我一个依赖周期。
有没有一种方法可以刷新服务?
尽管“您从没有参数的定义资源类型中不能获得真正的附加价值”是真实的,因为它适用于OP问题的细节,但作为一般规则并不正确。每个定义的类型实例都有一个内部可访问的'$ title'(也可以作为'$ name'访问),并且它的使用可以使该类型提供附加值(因为可以有效声明多个实例)。实际上,我甚至会说,它主要是使用'$ title',而不是参数的存在或缺失,它决定了一个定义的类型是否提供附加价值。 –
@JohnBollinger好点。让我更新我的重点。 –
你对错字是正确的,我已经修复了OP。资源是在他们自己的清单中,我只是格式化它,所以它更容易阅读。 看起来像我不知道的主要事情是本地资源没有名称空间。我认为我在发布我的问题之前没有使用命名空间尝试它,但是我这样做时可能没有大写“Service”,因为它没有工作。 无论如何,我已经接受你的答案。谢谢。 –