如何定义 nginx 说明书的自定义属性



对于我目前的问题,我正在使用nginx食谱。我想做的是从源代码安装它(使用 nginx::source 执行此操作没有问题)并将其前缀为 /opt/nginx/<version>/ ,但它将始终以 /opt/nginx-<version>/ 为前缀(默认情况下)。

这是我./attributes/default.rb

node.override['nginx']['source']['prefix'] = "/opt/nginx/#{node['nginx']['source']['version']}"
#also tested
override['nginx']['source']['prefix'] = "/opt/nginx/#{node['nginx']['source']['version']}"
#and also
default['nginx']['source']['prefix'] = "/opt/nginx/#{node['nginx']['source']['version']}"

我不明白什么?

谢谢


另一件事是: - 我如何像上面一样为它添加前缀并创建一个指向/opt/nginx/current的符号链接(即使在更新后也这样做)?

所以,这是食谱中的一个缺点。 许多变量都是基于该属性的值构建的,如果您尚未首先设置覆盖值,则说明书中的值仍将优先于派生属性。

如果在节点或环境中为应该有效的nginx['source']['prefix']设置覆盖,但这并不理想。 或者,也重写派生值。

https://github.com/miketheman/nginx/blob/master/attributes/source.rb

default['nginx']['source']['sbin_path'] = "#{node['nginx']['source']['prefix']}/sbin/nginx"
default['nginx']['source']['default_configure_flags'] = %W(
  --prefix=#{node['nginx']['source']['prefix']}  # <= this one needs overridden
  --conf-path=#{node['nginx']['dir']}/nginx.conf
  --sbin-path=#{node['nginx']['source']['sbin_path']}
)

可能还有其他的,但这是我所知道的两个,而且很突出。

相关内容

  • 没有找到相关文章

最新更新