覆盖厨师资源中的属性
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
我为 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