首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chef-solo nginx食谱没有注意到我的属性

chef-solo nginx食谱没有注意到我的属性
EN

Stack Overflow用户
提问于 2013-08-01 07:11:55
回答 3查看 1.2K关注 0票数 4

我的问题的要点在这里:

https://gist.github.com/tsabat/a8f27ae6ac7d1fd3b6f7

高级问题是chef-solo似乎不能识别我在attriutes/default.rb文件中为食谱设置的属性。

我最近从10个人转到了11人,我认为一些突破性的变化让我大吃一惊。

请帮帮忙。

EN

回答 3

Stack Overflow用户

发布于 2013-08-19 16:17:44

您需要覆盖其他变量:prefixurlsbin_pathdefault_configure_flags

代码语言:javascript
复制
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']}"
]

这是因为这些变量嵌入了其他变量,并且它们是使用尚未被您的值覆盖的值设置的。

通过在包装器食谱中指定这些额外的变量,您可以确保它们使用您期望的所有更新值。

此外,因为default的值已经在nginx食谱中设置了,所以最好使用set (normal的别名)这样的值,因为这样可以更准确地描述您正在做的事情,并且具有更高的attribute precedence

票数 3
EN

Stack Overflow用户

发布于 2013-08-01 09:23:05

在你的要点中回答。

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

票数 0
EN

Stack Overflow用户

发布于 2013-08-02 01:04:40

所以,我不知道为什么厨师在菜谱中以不同的方式对待变量,但这里是我的解决方案。

从食谱中提取属性的方式发生了一些变化,这让我很恼火。因为我使用的是Chef Solo,而它不支持角色,所以我只创建了一个角色,覆盖了那里的属性,然后将其命名为我的基本食谱。

当我在服务器上工作时,这个模型与我对Chef进行概念化的方式工作得更紧密,所以它对我来说是一个有效的解决方案。我做了以下工作:

创建一个名为Base的角色

代码语言:javascript
复制
name "base"
description "The base role"
run_list "recipe[base]"
override_attributes "nginx" =>
  {
    'install_method' => 'source',
    'source' => {'version' => '1.5.3'}
  }

通过Vagrantfile将角色添加到runlist

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17982574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档