Chef / Ruby如果我们没有匹配项,在一些文本后添加IP

时间:2018-02-18 19:08:41

标签: ruby chef

我正在尝试将现有行之后的节点IP添加到配置文件中。我第一次运行配方它没问题,但第二次检查匹配时(我试图避免使用If语句复制一行)它向我显示错误。这是食谱代码示例:

IP=node['ipaddress']

ruby_block 'Inesrt IP' do
if File.readlines('file.conf').grep(/#{IP}/).size < 1
        block do
                file = Chef::Util::FileEdit.new("file.conf")
                file.insert_line_after_match(/someline/, "TCPAddr #{IP}")
                file.write_file
        end
end
end

这是错误:

NoMethodError
    -------------
    undefined method `call' for nil:NilClass

我是红宝石和厨师的新手。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

FileEdit是Chef的内部类,不属于我们的公共接口。看看社区烹饪书,比如poise-file和line。