我一直在试图弄清楚如何编写一个安装ACL包的配方,然后在启用它的情况下重新安装文件系统root:
apt-get install acl
mount -o remount /
我对食谱的尝试是:
case node[:platform]
when "debian","ubuntu"
package "acl" do
action :install
end
mount "/" do
options "acl"
action [:remount, :enable]
end
end
不幸的是(并不奇怪)厨师不知道如何读取/的现有fstab条目并在不改变任何其他内容的情况下添加acl,因此它会消除挂载点上的现有选项。关于如何实现这一目标的任何想法?
答案 0 :(得分:4)
找到了与Augeas合作的方法:
# Install ACL and remount the root volume with ACL enabled
case node[:platform]
when "debian","ubuntu"
%w{acl augeas-tools}.each do |pkg|
package pkg
end
execute "update_fstab" do
command <<-EOF
echo 'ins opt after /files/etc/fstab/*[file="/"]/opt[last()]
set /files/etc/fstab/*[file="/"]/opt[last()] acl
save' | augtool
mount -o remount /
EOF
not_if "augtool match '/files/etc/fstab/*[file=\"/\"]/opt' | grep acl"
end
end
我真的不喜欢这个解决方案,但似乎有效。不过必须有更好的方法,对吗?