在我的厨师食谱中,我需要创建这样的目录(树):
/var/www/common
+ variable_1 (array)
+ variable _2 (array)
+ variable_3 (array)
给予他们共同的权限。我已经google了,但是无法为这种树选择正确的方法..
答案 0 :(得分:4)
我会做一些事情:
variable_1.each do |v1|
directory "/var/www/common/#{v1}" do
owner 'me'
group 'me'
mode '755'
end
variable_2.each do |v2|
directory "/var/www/common/#{v1}/#{v2}" do
owner 'me'
group 'me'
mode '755'
end
variable_3.each do |v3|
directory "/var/www/common/#{v1}/#{v2}/#{v3}" do
owner 'me'
group 'me'
mode '755'
end
end
end
end
哈希可能是更好的循环方式,也许创建叶子目录并执行递归chown
和chmod
可能是另一种方法。
这里的主要缺点是,即使创建具有directory
属性的父级,chef中的recursive
资源也只在最后一个上设置权限。
答案 1 :(得分:1)
Chef不支持此功能。您可以使用recursive
资源上的directory
选项轻松创建嵌套文件夹,但只有叶文件夹使用请求权限,所有其他文件夹只能获得umask指示的内容。
最简单的方法是循环:
my_variable = ['/var/www/common', 'foo', 'bar', 'baz']
path_so_far = ''
my_variable.each do |path|
path_so_far = File.join(path_so_far, path)
directory path_so_far do
owner 'me'
group 'me'
mode '755'
end
end