【问题标题】:Chef : Define an attribute with the value of another attributeChef : 用另一个属性的值定义一个属性
【发布时间】:2018-12-06 06:46:06
【问题描述】:

在我的环境文件中,我定义了一个属性说

['app']['web'] = 'nginx'

在另一个环境文件中

['app']['web'] = 'apache'

我的目的是创建一个可以在任何环境中运行的配方。在配方中,我定义了一个属性。因此,在第一个环境中运行此配方时,我想定义 node.default['cluster']['nginx']['endpoint'] 而在第二个环境中它应该是 node.default['集群']['apache']['endpoint']

我用了以下

node.default['cluster'][node['app']['web']]['endpoint']

但这不起作用。有什么办法可以实现吗?

【问题讨论】:

  • 上面的代码可以工作。实际上我在 node.default['cluster'][node['app']['web']]['endpoint'] 中犯了一个拼写错误,这就是 chef-client 失败的原因。

标签: chef-infra chef-recipe chef-attributes


【解决方案1】:

由于您没有指定属性type,因此很难给您一个具体的答案。属性类型与属性precedence 一起将确定node['app']['web'] 在厨师客户端compilation phase 处是否保持非零值

【讨论】:

  • 我将它作为默认属性添加到环境文件中。 "default_attributes": { "app": { "web": "nginx" }
【解决方案2】:

请参阅https://github.com/poise/poise-derived 以获取解决方案。更多字符,因为我必须这样做。

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 2010-11-14
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多