【问题标题】:how to Set Ruby ENV using mutiple attributes in Chef如何在 Chef 中使用多个属性设置 Ruby ENV
【发布时间】:2016-03-07 23:35:39
【问题描述】:

我正在尝试通过定义路径来使用两个可用节点属性来设置 Ruby ENV,但标准字符串插值语法不起作用。试图实现这样的目标:

ENV['CONFIGURATION_DIR'] = '/mnt/#{node[\'clientid\']}-#{node[\'environment\']}/conifg'

也试过了

ENV['CONFIGURATION_DIR'] = '/mnt/node[\'clientid\']-node[\'environment\']/config'

是否可以使用多个属性/数据包项值设置 Ruby ENV?

【问题讨论】:

  • 能够使用接受熟悉语法的 environment 属性绕过此问题: environment "CONFIGURATION_DIR" => "/mnt/#{node['clientid']}-#{node[' environment']}/config" .. 如果有人有的话,仍然想要最初描述的场景的解决方案。

标签: ruby chef-infra chef-recipe


【解决方案1】:

如果你想使用嵌入变量,你必须使用双引号。

bar = 'apple'

"foo #{bar}" # This will work.
=> "foo apple"

'foo #{bar}' # This will not work.
=> "foo #{bar}"

【讨论】:

  • 谢谢,根据你的建议,我改成:ENV['CTC_CONFIGURATION'] = "/mnt/#{node['ctc_clientid']}-#{node['ctc_environment']}/ ctcConfiguration”,但仍然一无所获。如果有帮助,一个值的标准方法是根本没有引号,例如 ENV['HOME'] = node['home']
  • 设置后的值是多少。也许您没有将其设置为您认为的样子。
  • 它是空白的。为了测试,我有一个额外的步骤来打印我所有的数据包项值、属性和环境。那个显示什么都没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
相关资源
最近更新 更多