2

在 Chef 中创建符号链接:

link "#{node[:tomcat][:home]}/webapps/myface.war" do
  to "/srv/scafandru/current/myface.war"
end

失败,因为当时节点上缺少父目录。

link资源中我看不到任何类似于directory资源的属性recursive true,所以我目前的方法是通过运行来确保目录结构存在

directory "#{node[:tomcat][:home]}/webapps" do
  recursive true
end

就在链接之前。

是否有任何优雅的方法可以将此行为封装在链接资源中?

4

1 回答 1

2

如果您不想编写代码,您的解决方案是最好的解决方案。

如果您愿意有更好的解决方案,您可以扩展链接提供者以添加递归属性。

为此,您可以参考opscode 文档中的说明:

扩展现有提供程序

如果您想编写一个扩展另一个提供程序类的 LWP,您可以将其作为一个 mixin 来完成,然后您可以使用该扩展类将其放置在食谱库目录下的库中。

然后将编写您的 LWRP 以将该库包含在提供程序实现中,以访问扩展的核心资源。例如,请参阅传输手册,其中包含一个 transmission_torrent_fileLWRP,允许您通过 BitTorrent 协议下载文件。此transmission_torrent_fileLWRP 是现有文件和 remote_file 资源的扩展。

于 2013-03-10T18:00:53.713 回答