噢海,
有没有办法在 AWS OpsWorks 上使用 LWRP for Chef?我还能如何执行此操作:
nfs_export "/exports" do
network '10.0.0.0/8'
writeable false
sync true
options ['no_root_squash']
end
这是出自这本食谱:
https://github.com/atomic-penguin/cookbook-nfs
我想添加导出,但我不喜欢这样。另外,我想创建一个 rc.local 条目来将导出挂载到节点上 - 使用 chef 是实现更好部署的理想选择。
答案1
您可以像处理普通 Chef 实现一样执行此操作。如果您创建包装器食谱,并在食谱的 metadata.rb 中添加对 NFS 食谱的依赖,则该nfs_export
资源将可用于包装器食谱的默认配方。
要将自定义配方从 Git 存储库添加到 OpsWorks 堆栈,您需要配置堆栈以提取配方:http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-enable.html
例如,您创建具有以下结构的 git 存储库:
cookbooks -> freshmelon-nfs --> metadata.rb |-> recipes -> default.rb
这就是存储库中的 cookbooks 文件夹,您可以metadata.rb
在其中为每个自定义 cookbook 添加一个文件夹。cookbook 的基本布局是自定义 cookbook(本例中为 freshmelon-nfs)中描述该 cookbook 的文件夹,以及一个 recipes 文件夹,其中包含每个 recipe 的一个 ruby 文件,默认文件名为 default.rb。
例如 metadata.rb
name 'afreshmelon-nfs' maintainer 'Your Name' maintainer_email 'your@email' license 'MIT' description 'NFS Wrapper' long_description 'Configures NFS for aFreshMelon' version '0.1' depends 'nfs'
示例 default.rb
nfs_export "/exports" do network '10.0.0.0/8' writeable false sync true options ['no_root_squash'] end
然后,您可以在 OpsWorks 堆栈的层配置中的生命周期(设置、配置、安装)事件中调用 afreshmelon-nfs::default。
您还可以client.rb
在您的食谱文件夹中创建一个,并将其包含在客户的层配置中,以安装导出。
mount "/mnt/nfs" do device "yourserver:/exports" fstype "nfs" options "rw" action [:mount, :enable] end
这会将 NFS 挂载添加到您的 fstab,并且它将在启动时与其他文件系统一起挂载。