Chef infra 主厨solo nginx菜谱不了解我的属性

Chef infra 主厨solo nginx菜谱不了解我的属性,chef-infra,vagrant,chef-solo,Chef Infra,Vagrant,Chef Solo,我的问题的要点在这里: 高级问题是,chef solo似乎没有注意到我在attriutes/default.rb文件中为菜谱设置的属性 我最近从10岁转到了11岁,我想一些突破性的变化让我感到非常不安 请帮忙。回答了你的要点 您需要另一个默认属性“default['nginx']['version']=1.5.3”,否则它将覆盖您的编译标志--prefix,因此,我不知道为什么chef会在菜谱中以不同的方式对待变量,但这里是我的修复方法 从烹饪书中提取属性的方式发生了一些变化,这让我很烦恼。因

我的问题的要点在这里:

高级问题是,chef solo似乎没有注意到我在
attriutes/default.rb
文件中为菜谱设置的属性

我最近从10岁转到了11岁,我想一些突破性的变化让我感到非常不安

请帮忙。

回答了你的要点


您需要另一个默认属性“default['nginx']['version']=1.5.3”,否则它将覆盖您的编译标志
--prefix

,因此,我不知道为什么chef会在菜谱中以不同的方式对待变量,但这里是我的修复方法

从烹饪书中提取属性的方式发生了一些变化,这让我很烦恼。因为我使用的是Chef Solo,它不支持角色,所以我只是创建了一个角色,覆盖了那里的属性,然后调用了我的基础烹饪书

这个模型与我在服务器上工作时如何对Chef进行概念化更为密切,因此它对我来说是一个有效的解决方案。我做了以下工作:

创建一个名为Base的角色

name "base"
description "The base role"
run_list "recipe[base]"
override_attributes "nginx" =>
  {
    'install_method' => 'source',
    'source' => {'version' => '1.5.3'}
  }
通过文件将角色添加到运行列表

config.vm.provision "chef_solo" do |chef|
  chef.cookbooks_path = "vendor/cookbooks"
  chef.roles_path = "roles"
  chef.data_bags_path = "data_bags"
  chef.add_role "base"
end

您需要覆盖其他变量:
前缀
url
sbin\u路径
默认配置\u标志

set['nginx']['version'] = "1.5.3"
set['nginx']['source']['version'] = "1.5.3"
# The Chef checksum of a binary is determined by: shasum -a 256 FILE_NAME
set['nginx']['source']['checksum'] = "edcdf2030750b4eb1ba8cd79365c16a3e33e6136b7fdd8a1a7b4082397f4e92b"
set['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['source']['version']}"
set['nginx']['source']['url'] = "http://nginx.org/download/nginx-#{node['nginx']['source']['version']}.tar.gz"
set['nginx']['source']['sbin_path'] = "#{node['nginx']['source']['prefix']}/sbin/nginx"

set['nginx']['source']['default_configure_flags'] = [
  "--prefix=#{node['nginx']['source']['prefix']}",
  "--conf-path=#{node['nginx']['dir']}/nginx.conf",
  "--sbin-path=#{node['nginx']['source']['sbin_path']}"
]
这是因为这些变量嵌入了其他变量,并且它们是使用尚未被您的值覆盖的值设置的

通过在包装器cookbook中指定这些附加变量,可以确保它们使用的是预期的所有更新值


另外,由于nginx cookbook中已经设置了
默认值
,因此最好使用
set
normal
的别名)之类的内容,因为这样可以更准确地描述您正在做的事情,并且具有更高的前缀。

即使定义了该属性,我仍然得到了错误的前缀。看看要点。这确实与聚合顺序和chef 11有关,因为当我将属性移动到角色时,事情开始正常运行。看一看。你的问题似乎与那件事有关。你是对的,它与那件事有关。我确实通过不依赖配方中的属性解决了这个问题,相反,我在role.Oi中覆盖了我的属性。我已经有一段时间遇到了同样的问题,使用厨师索洛。谢谢你问这个问题。当然,我能做到。但是,这似乎有些过头了。我想知道为什么派生的变量无法识别我已经重写了它们的派生变量。