2014-03-12 148 views
0

编辑:我编辑这个基于下面的建议:如何通知傀儡定义

我有一个模块在这样的定义所谓的Symfony2:

define symfony2::symfony2($cache = false, $root_dir = '') { 
    if $cache { 
     file {"${root_dir}/app/cache": 
      path => "${root_dir}/app/cache", 
      ensure => directory, 
      purge => true, 
      force => true, 
     } 
    } 
} 

然后,我实例化这个定义在我的脚本如下所示:

symfony2::symfony2{"symfony2": 
    cache => true, 
    root_dir => "/home/whatever", 
} 

,我想让它变得呼吁一个通知该exec资源的,但我找不到描述如何做到这一点的任何信息:

exec {"do-something-and-then-notify-the-symfony2-define": 
    command => "xyz...", 
    notify => symfony2::Symfony2["symfony2"], 
} 

notify => Symfony2部分是我的问题。我如何编写脚本以让exec通知symfony2定义?这甚至有可能吗?

回答

3

你应该能够做到这一点:

exec {"do-something-and-then-notify-the-symfony2-define": 
command => "xyz...", 
notify => ModuleName::Symfony2["symfony2"], 
} 

顺便说一句,你得到什么错误,当你尝试过你尝试过什么?

+0

谢谢!我这样做了(我编辑了上面的代码以反映我所做的更改)。我还通过在其前面加上“symfony2 ::”来完全限定这个定义,现在这个错误提示如下:“'Symfony2'的语法错误;预计'}'在...后面跟着文件名和行号。 – pkout

+0

看来你已经整理出来了。 '}'在我的例子中没有编码结构... – iamauser

+0

是的,这是没有问题的。谢谢! – pkout

3

在你的资源参考symfony2::Symfony2["symfony2"]你应该大写每个类型引用的第一个字母,所以Symfony2::Symfony2["symfony2"]

这里是证明这个工程:

define foo::bar() { 
    notify { $title: } 
} 
foo::bar { 'first': } 
notify { "second": 
    notify => Foo::Bar['first'] 
} 

以正确的顺序可生产firstsecond

+0

这是失踪的一块!谢谢!尽管我接受了iamauser的回答,因为他的回答让我非常接近,这是我的错,我没有写出第一个字母。不过,我赞成你的回答。 :) – pkout