如何在 AWS OpsWorks 上使用 LWRP?

如何在 AWS OpsWorks 上使用 LWRP?

噢海,

有没有办法在 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,并且它将在启动时与其他文件系统一起挂载。

相关内容