我希望有一个自定义资源来编辑像“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
答案 0 :(得分:0)
1)不要使用FileEdit。它是Chef内部的API,不适合公共使用。
2)具体问题是在whyrun期间没有运行ruby_block资源,因为我们无法阻止它们产生副作用。