2013-03-10 38 views
2

在厨师创建符号链接:如何确保Chef中的符号链接上存在目录路径?

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

失败,因为当时的父目录丢失的节点上。

link resource我看不到任何属性类似directory resourcerecursive true,所以我目前的做法是,以确保目录结构由右联之前运行

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

存在。

是否有任何优雅的方式来封装链接资源内的这种行为?

回答

2

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

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

要做到这一点,你可以参考opscode documentation,指出:

扩展现有的供应商

如果您想编写一个LWP是 扩展另一个提供商类,你可以把它作为一个混合, ,然后你将放置在库目录 的库下使用该扩展类的食谱。

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

+0

谢谢@kamaradclimber! – 2013-03-10 20:32:11

相关问题