如何在puppet中引用create_resource,就像我们为File [""],Service [""],Package [""]等所做的那样

时间:2016-10-01 06:47:28

标签: puppet

我有一个带有exec资源和create_resources功能的puppet文件。我希望在create_resources资源之后立即执行exec。我该怎么做?

与引用File['name']类似,我使用Create_Resources[....]尝试了notify,但它无效。

notify => Create_Resources[domain_ip_map, $data, $baseconfigdir].

init.pp

exec { 'purge-config-files':
  before  => [File["${config_file_service}"], File["${config_file_host}"]],
  command => "/bin/rm -f ${baseconfigdir}/*",
  #notify => Create_Resources[domain_ip_map, $data, $baseconfigdir],
}

create_resources(domain_ip_map, $data)

1 个答案:

答案 0 :(得分:1)

对于依赖项元参数requirebeforesubscribenotify,属性必须是资源类型。指定notify => Create_Resources[domain_ip_map, $data, $baseconfigdir],表示您尝试将create_resources函数的输出指定为资源。对于该参数,这不是一个可接受的类型。

有两种不同的方法可以解决这个问题。您可以添加notifysubscribe

使用subscribe,您需要添加:

subscribe => Exec['purge-config-files'],

包含$data资源的domain_ip_map哈希所需的任何位置'参数和属性。

使用notify,您需要组装如下所示的资源标题数组(假设使用stdlib):

$domain_ip_map_titles = keys($data)

然后将其放在您的exec资源中,而不是像这样:

exec { 'purge-config-files':
  before  => [File["${config_file_service}"], File["${config_file_host}"]],
  command => "/bin/rm -f ${baseconfigdir}/*",
  notify  => Domain_ip_map[$domain_ip_map_titles],
}

create_resources(domain_ip_map, $data)

其中任何一个都适用于您的情况。