为文件指定别名似乎可行。例如,名为“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"] 需要“文件 {[“/usr/local/tomcat/dir1”,“/usr/local/tomcat/dir2”,“/usr/local/tomcat/dir3”,“/usr/local/tomcat/dir4”] ”而不复制/粘贴所有路径?
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 => [ !!!!!!!!!!!!!!! ],
}
因为,如果我修改了某些路径,那么我必须修改我在课堂上使用的所有“要求”!
谢谢!
答案1
做这个:
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
。
答案2
好吧,为了保持相同的结构,您可以将目录列表声明为一个变量,然后使用该变量进行声明和要求。
但是,这听起来确实很混乱 - 为什么不让父目录(/usr/local/tomcat
)需要子目录(并集体定义它们),然后让它订阅notify
(或需要)父目录?exec
exec
语言中有很多工具可用于创建您需要的流程和依赖结构,而使用列表的强力操作可能不是最好的解决方案。
答案3
如果一个资源需要多个其他资源,则必须声明该需求。这是无法避免的。
不过,就您而言,我不明白为什么exec
您指定需要超过/usr/local/tomcat/dir1
。