gpt4 book ai didi

ruby - Chef 模板问题,过时的变量

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:24 26 4
gpt4 key购买 nike

我在运行我的 Chef Cookbook 时看到一个奇怪的问题,即使在修改 json env 文件之后,它几乎看起来像是在运行之间使用了一些陈旧的变量名称。请参阅下文了解更多详情。我已经粘贴了我的模板和环境文件的摘录。还显示了所需的输出和我看到的当前奇怪的输出。这可能与我的 ruby 循环有关(请原谅我的 ruby ,这里是菜鸟),但我已经多次检查它并且没有发现构造有任何问题。

感谢任何帮助...现在已经将近 24 小时搞砸了,为了提高工作效率,我正在与其他人联系。

这是我在这里的第一篇文章,不允许在内容中发布超过 2 个链接。我必须从示例输出中删除“http”和“https”并重命名我的域名以绕过。

模板:

gatewaymappings: |  
{
<% @gatewaymappings.each_with_index do |mapping, index| %>
"<%= mapping.incomingFQDN %>" : "<%= mapping.upstreamProtocol %>://<%= mapping.upstreamFQDN %>
<% if (mapping.upstreamPort.length > 0) %>
:<%= mapping.upstreamPort %>"
<% end %>
<% if (index+1 != @gatewaymappings.count) %>
,
<% end %>
<% end %>
}

Chef 模板变量:
:gatewaymappings => node[app_name]['gatewaymappings']

示例 JSON:

"gatewaymappings": [  
{
"incomingFQDN": "host1",
"upstreamProtocol": "http",
"upstreamFQDN": "upstream1",
"upstreamPort": "8000"
},
{
"incomingFQDN": "host2",
"upstreamProtocol": "https",
"upstreamFQDN": "upstream2",
"upstreamPort": "8001"
}
]

期望的输出:(在 yml 文件中)

 gatewaymappings: |  
{
"host1" : "upstream1:8000",
"host2" : "upstream2:8001"
}

当前输出:
(第一个元素来自之前的示例环境运行,它甚至不存在于我当前的示例 json 中,我尝试清除缓存等,但它仍然不断出现)

gatewaymappings: |  
{
"localhost" : "upstream",
"host1" : "upstream1:8000",
"host2" : "upstream2:8001",
"host1" : "upstream1:8000",
"host2" : "upstream2:8001"
}

最佳答案

我想我能够解决这个问题。这是由于我的节点配置已损坏。我应该提到我正在使用 chef-zero。事实证明,节点配置被保存回 nodes 目录中的 json 文件,即使对于 chef-zero 也是如此,所以无论我删除多少次 ~/.chef 中的本地模式缓存 和我的安装目录,陈旧的值不断回来。感谢gitter聊天室,有人温柔地提醒我检查节点的配置。这解决了这个问题,我现在看到了我的预期输出。谢谢!

关于ruby - Chef 模板问题,过时的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com