如何确保Chef中的符号链接存在目录路径?

时间:2013-03-10 17:49:28

标签: symlink chef chef-solo

在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

在链接之前。

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

1 个答案:

答案 0 :(得分:2)

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

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

为此,您可以参考opscode documentation说明:

  

扩展现有提供商

     

如果你想写一个LWP   扩展另一个提供者类,你可以将其作为一个混合,   然后将它放在库目录下的库中   使用那个扩展课程的食谱。

     

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