如何以幂等方式使用 Chef 添加 NFS 共享?
Posted
技术标签:
【中文标题】如何以幂等方式使用 Chef 添加 NFS 共享?【英文标题】:How do I add a NFS share using Chef in an idempotent way? 【发布时间】:2012-11-21 10:36:30 【问题描述】:我想使用 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】:一般建议由 Chef 管理整个文件。在这种情况下,我将使用“nfs”说明书(或任何您命名的)中导出共享的属性,然后使用“模板”资源来管理文件的内容。食谱的属性文件中的类似内容,或通过角色应用:
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) 上发表。它非常完整,包括测试。
【讨论】:
以上是关于如何以幂等方式使用 Chef 添加 NFS 共享?的主要内容,如果未能解决你的问题,请参考以下文章