如何为File {}提供一个名称,以便在Puppet上执行“require”的后续步骤?

给一个文件的别名似乎工作。 例如,名称为“tomcat_dir”的文件可用于“require => File [”tomcat_dir“]”的下一步:

file {"tomcat_dir": ensure => directory, path => "/usr/local/tomcat", mode => "755", owner => "tomcat", group => "65534", recurse => true, require => [ Exec["tomcat_unzip"] ], } 

但是,如果我这样做:

  file { [ "/usr/local/tomcat", "/usr/local/tomcat/dir1", "/usr/local/tomcat/dir2", "/usr/local/tomcat/dir3", "/usr/local/tomcat/dir4"]: ensure => directory, mode => "755", owner => "tomcat", group => "65534", require => [ Exec["tomcat_untar"] ], } 

我怎么能说Exec [“test_unzip”]需要“file {[”/ usr / local / tomcat / dir1“,”/ usr / local / tomcat / dir2“,”/ usr / local / tomcat / dir3“ usr / local / tomcat / dir4“]”而不复制/粘贴所有的path?

  exec {"test_unzip": cwd => "/usr/local/tomcat/dir1", command => "/usr/bin/unzip /tmp/${tomcat_zip_name}", unless => "test -f /usr/local/jboss${version}/server/boursorama-${application}/version-${container_version}", require => [ !!!!!!!!!!!!!!! ], } 

因为,如果我修改了一些path,我必须修改我在课堂上使用的所有“要求”!

谢谢!

做这个:

 file { [ "/usr/local/tomcat", "/usr/local/tomcat/dir1", "/usr/local/tomcat/dir2", "/usr/local/tomcat/dir3", "/usr/local/tomcat/dir4"]: ensure => directory, mode => "755", owner => "tomcat", group => "65534", require => Exec["tomcat_untar"], before => Exec['test_unzip'], } 

所以你不必改变test_unzip

那么,为了保持相同的结构,你可以声明目录列表为一个variables,然后声明和要求与该variables。

但是,这听起来很麻烦 – 为什么没有父目录( /usr/local/tomcat )需要子目录(并定义它们),然后让它notify exec ,或让exec订阅(或需要)父目录?

在语言中有很多工具可以用来创build您所需要的stream程stream和依赖关系结构,而使用列表进行暴力攻击可能不是您的最佳解决scheme。

如果资源需要其他几个资源,则必须声明该要求。 这是没有办法的。

就你而言,我不明白为什么你指定的exec需要比/usr/local/tomcat/dir1