如何在为什么运行模式下捕获Chef :: Util :: FileEdit.new操作

时间:2018-02-15 11:09:15

标签: chef cookbook chef-custom-resource

我希望有一个自定义资源来编辑像“crontab”资源那样的文件。

下面是我的自定义资源,它完成了这项工作,但是在“为什么 - 运行”模式下,它没有显示它将添加或删除的字符串。

resource_name :super_tab
provides :super_tab

property :command, String, name_property: true
property :path, String, required: true
property :allowed_user, String, required: true
property :uid, String,  default: 'root'

action :add do
    ruby_block "edit super.tab" do
        block do
            supertab = Chef::Util::FileEdit.new("/etc/super.tab")
            supertab.search_file_delete_line(/^#{command} /)
            supertab.insert_line_if_no_match(/^#{command} /, "#{command} #{path} #{allowed_user} uid=#{uid}")
            supertab.write_file
        end
    end
end

1 个答案:

答案 0 :(得分:0)

1)不要使用FileEdit。它是Chef内部的API,不适合公共使用。

2)具体问题是在whyrun期间没有运行ruby_block资源,因为我们无法阻止它们产生副作用。