【问题标题】:Chef Data Bags and dynamic variable passingChef 数据包和动态变量传递
【发布时间】:2016-01-07 20:11:29
【问题描述】:

我正在想办法让下面的代码工作;我尝试了各种方法,但厨师客户端运行在第 3 行中断。

lsf = "#{node[:env]}"+"_ls"
dsf = "#{node[:env]}"+"_ds"

dsTemplateBag = data_bag_item('configTemplates', "#{dsf}") 
lcTemplateBag = data_bag_item('configTemplates', "#{lsf}")

但是在另一个测试配方中,我能够成功地完成以下工作:

env = "test"

dsTemplateBag = data_bag_item('configTemplates', "#{env}")

我对 Chef 很陌生,请有人告诉我如何让它工作?

【问题讨论】:

  • 因为你的第三行是空白的,很难说。你不应该混合连接和插值,使用lsf = "#{node[:env]}_ls",如果你不需要在字符串中包含一个var,直接调用它:data_bag_item('configTemplates', lsf)
  • 感谢您的建议。实际上,我最初尝试了这一点,并混合了串联和插值,只是为了看看这是否能奏效。但最终发现问题出在数据包上。我的数据包中有一个小错字导致问题。

标签: dynamic chef-infra databags


【解决方案1】:

经过一点调试,我意识到有一个错字导致数据包无法正常使用;因此问题。

dsTemplateBag = data_bag_item('configTemplates', "#{node[:env]}_ls")

这对我有用。正如 Tensibai 在上述评论中所建议的那样,混合串联和插值并不是一个好习惯(我迫切希望让它发挥作用!为我辩护)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多