问题标签 [chef-attributes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
chef-infra - Chef - 动态调用主机特定的环境属性
我是 Chef 和 Ruby 的新手,我已经玩了几天的食谱了。目前,我遇到了一个我认为很简单的问题,但由于缺乏适当的知识,我无法解决它。
我将在 Linux VM 上配置网络接口的 creste chef recipy。
我的 ifcfg-ethX 模板如下所示:
ifcfg-ethX.erb
大多数属性将从环境文件中检索。该文件的结构是:
我的问题是我无法从该环境文件中动态检索网络参数。我当前的 env 文件只定义了 2 个主机,但是会有几十个主机,并且可能会不断添加新主机,所以我必须有一个可以解决这个问题的方法。所有解决方案将不胜感激。
chef-infra - Chef节点属性定义:通过引用其他字段定义一个字段
如何通过这种方式定义 ruby 哈希?
编辑:上面的代码是厨师食谱的attributes/default.rb
我正在寻找一种方法来定义 Hash 内的 default_interval 并且能够被其他字段引用,以便 default_interval 可以被其他 Chef 方法(例如环境 json)覆盖。
这就是为什么我不选择简单地定义一个全局 default_interval var 的原因。
目前,我使用以下定义来表示 default_interval
空的{}
可以被环境json等其他主厨手段覆盖改成{diff: 600, snapshot:86400}
有更好的酷方法吗?
chef-infra - 如何使用 Chef 覆盖节点上的属性?
我们有一个 Chef 环境设置。我们的部署工作正常,节点属性被角色和环境正确覆盖。
为了测试即将发生的更改,我们希望更改部署中 1 个特定节点的设置。我们不想为该测试编写不同的配方、角色或环境,因为实际上只有 1 个设置不同。
我尝试通过 Chef Manage 的 Web UI 并将特定节点的属性设置如下:
在我们的食谱中,attributes/default.rb
设置如下:
在我们的环境文件中,我们覆盖设置如下:
.erb
我们在配方中使用以下模板:
但是,当我们在该节点上运行 chef-client 时,它仍然会http://default-server
在输出中结束。
我理解文档中解释的属性优先级。但我不确定如何实现我想要的。
我不override_attributes()
应该在我的环境文件中使用吗?
有没有办法拥有特定于节点的覆盖属性?
chef-infra - Chef : 用另一个属性的值定义一个属性
在我的环境文件中,我定义了一个属性说
['app']['web'] = 'nginx'
并在另一个环境文件中
['app']['web'] = 'apache'
我的目的是创建一个可以在任何环境中运行的配方。在配方中,我定义了一个属性。所以在第一个环境中运行这个配方时,我想定义 node.default['cluster'] ['nginx'] ['endpoint'] 并且在第二个环境中它应该是 node.default['cluster'] ['apache' ] ['端点']
我使用了以下
node.default['cluster'] [node['app']['web']] ['endpoint']
但这不起作用。有什么办法可以做到这一点?
chef-attributes - 如何更改策略组的属性而无需重新编译所有策略文件?
我正在尝试从 Chef 中的环境文件转移到使用 Policyfiles。https://docs.chef.io/policy.html。我真的很喜欢这个概念,特别是因为您可以将策略中的策略包含到另一个策略中,但我试图了解如何进行简单的属性更改。
例如,如果我想更改一个全局使用的属性,该属性可能是当前正在发生的问题的错误消息。(“系统将关闭 10 分钟。感谢您的耐心等待”)。或者,也许我想关闭一些带有作为标志的属性的 AB 测试。据我所知,我能做到这一点的唯一方法是更改策略文件中的一个属性,然后我需要创建一个新版本的策略文件。
如果策略文件包含在许多其他策略文件中,例如基本策略文件,那么我需要做很多工作来进行简单的更改。
default['production']['maintenance_message'] = 'We will be down for the next 15 minutes!'
default['production']['start_new_feature'] = true
如何对影响整个策略组的属性进行简单更改?有没有一种简单的方法来更改属性,或者我必须将所有环境属性移动到数据包中?
chef-infra - 使用自定义属性安装多个软件包时出现厨师错误
我正在尝试使用自定义属性使用 Chef 的“包”资源安装多个包。当我尝试:
上面的代码对我来说很好,但是在尝试使用自定义属性时相同的代码会出错。
请看一看-
我的食谱代码:
属性代码:
错误日志:
shell - 如何从添加到节点运行列表的说明书中获取属性?
我有一本食谱mycookbook
,它被添加到节点的运行列表中node_address
。现在我想mycookbook
从节点中检索 JSON 格式的属性。
在这种情况下,我可以访问该节点,因此我可以在该节点中 ssh 并运行命令。
我还想了解使用哪些刀命令从添加到节点运行列表的说明书中获取 JSON 格式的属性。
chef-infra - Chef Infra:如何更改节点文件中说明书的默认值?
我正在寻找有关如何更改 tomcat 食谱中指定的默认值的具体说明。我在 node.json 文件中使用这本说明书来创建一个实例,但我想更改我节点的说明书中指定的安装目录的默认路径。
tomcat 食谱属性文件中的默认值,如:default['tomcat']['install_location']='/installation/path'
我需要在我的节点文件中安装 tomcat 的值是:'/user_defined/path'。
任何人都可以帮助我如何实现这一目标。我需要在我的节点文件中使用这些属性来获取这些更改。?