Chef-如果node.name在模板列表中,标记服务器

问题描述 投票:0回答:1

我们遇到一个问题,即我们没有管理员权限来仅用刀来标记服务器。我将如何告诉Chef读取模板,以及模板是否包含服务器的节点名称以对其进行标记。

我知道我可以用tag('tagnamehere')标记服务器,但是围绕它的代码...我不知道这样是否可行。或者,如果“ Template.readlines”是搜索功能而不是“ File.readlines”。

if Template.readlines('template1.erb').grep(/#{node.name}/).any?
tag('mytag')
end

不确定如何完成这项壮举。但要努力以Ops的身分来理解。

ruby chef
1个回答
0
投票

如果我理解正确地读取了静态模板erb文件,并且您正在寻找是否使用了#{node.name}变量。

在这种情况下,解决方案是通过使用grep中的\跳过字符串插值

if Template.readlines('template1.erb').grep(/\#{node.name}/).any?
    tag('mytag')
end

© www.soinside.com 2019 - 2024. All rights reserved.