覆盖厨师资源中的属性

Override an attribute in chef resource

我为 redisio community cookbook 创建了一个包装器食谱,我想覆盖 resources/install.rb:

download_dir 属性
attribute :download_dir, :kind_of => String, :default => Chef::Config[:file_cache_path]

因为 file_cache_path 它采用 chef-client 所在的路径 运行 (/var/chef/cache)。问题是在 attributes/default.rb(redisio 食谱)中,因为只有 install_dir 在我指定的文件夹中创建一个 bin,如下所示:

node.override['redisio']['install_dir'] = '/redis-setup'  -> rediswrapper cookbook 

而不是包含 install recipe,您可以只获取重要部分并自己调用 redisio_install 提供程序并提供 download_dir 选项,例如使用

include_recipe 'redisio::_install_prereqs'
include_recipe 'build-essential::default'

redis = node['redisio']
location = "#{redis['mirror']}/#{redis['base_name']}#{redis['version']}.#{redis['artifact_type']}"

redisio_install "redis-installation" do
  version redis['version'] if redis['version']
  download_url location
  safe_install redis['safe_install']
  install_dir redis['install_dir'] if redis['install_dir']
  download_dir "/tmp"
end