【发布时间】:2019-08-05 21:30:03
【问题描述】:
这是代码,我想在收敛时执行它以获取运行时的变量值:
属性/default.rb:
default['dir_list'] = []
recipes/default.rb
node['dir_list'].each do |dir|
directory dir.to_s do
group 'root'
owner 'root'
mode '755'
recursive true
action :create
end
end
recipes/list_dir.rb:
node.default['dir_list'] = ['/usr/dir1', '/usr/dir2', /usr/dir3']
run_list:
- 食谱[list_dir]
- 食谱[默认]
这里的第一个配方 list_dir.rb,将变量设置为默认创建的 3 个目录.rb。
问题出在这里,default.rb 没有设置这些目录,因为这些值是在编译时获取的。
不管怎样,我们可以在运行时设置node['dir_list'],然后执行default.rb上的代码。
这里我试图通过在运行时提供目录列表来动态创建多个目录。因此,请告知在运行时调用目录资源的最佳方式。
【问题讨论】:
-
我应该按照你的描述工作。确保在
default之前调用list_dir配方。如果不是,您始终可以使用include_recipe在default中包含list_dir配方。
标签: chef-infra