如何使用Chef以幂等方式添加NFS共享?

时间:2012-11-21 10:36:31

标签: ruby linux chef nfs

我想使用Chef在Linux中使用NFS共享文件夹。到目前为止,我有这个:

#share the path using NFS
File.open("/etc/exports", 'a') do |file|
    file.puts FS_BASE_PATH+" *(rw)"
  end

一次有效。后续配置会重复此行。

我是否继续沿着这条路走下去,检查文件内容是否已经包含Ruby中的行?或者,是否有一个配置NFS共享的命令,而无需直接编辑导出文件,代表我对其进行排序?在Windows中,我使用NET SHARE。

Linux和NFS的风格是:Ubuntu 12.04,nfs-kernel-server

1 个答案:

答案 0 :(得分:2)

通常建议由Chef管理整个文件。在这种情况下,我将使用“nfs”cookbook中的导出共享的属性(或任何您命名的),然后使用“模板”资源来管理文件的内容。在cookbook的属性文件中有类似的东西,或通过角色应用:

default['nfs']['exports'] = ["/srv/export 10.0.0.0/8(ro,sync,no_root_squash)"]

食谱中的模板:

template "/etc/exports" do
  source "exports.erb"
  mode 00644
end

然后是模板本身:

<%- node['nfs']['exports'].each do |line| %>
<%= line %>
<%- end %>

当然,已有一本非常好的NFS食谱,由Chef Community Site (nfs cookbook)的优秀食谱作者发表。它非常完整,包括测试。