给一个文件的别名似乎工作。 例如,名称为“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
。