Chef-solo:deploy:访问release_path

时间:2012-05-08 10:23:44

标签: ruby deployment chef

我有以下厨师食谱:

deploy "/home/prj" do
  repo "https://path_to_repo"
  user node.project_owner
  group node.project_owner
  symlink_before_migrate({})
end

如何访问提供商的发布路径?在我的情况下将是:/ home / prj / releases / 20120506125222 /。

1 个答案:

答案 0 :(得分:2)

这取决于您要访问发布路径的位置。 “内部”资源,即回调,很容易使用类似的东西

deploy "/home/prj" do
  before_migrate do
    gemfile = File.read("#{release_path}/Gemfile")
  end
end

在资源之外,您没有可用的release_path变量。但是,您可以使用指向当前部署版本的current符号链接,即最后一个版本:

current_path = "home/prj/current"
release_path = File.readlink(current_path)

大多数情况下,您可以直接在current_path中查看内容,而无需诉诸解析符号链接目标。

那就是说,你通常不想直接在那里做事。相反,我们鼓励您在共享目录中生成其他文件(即/home/prk/shared),并让chef在部署期间将这些文件符号链接到该版本中。这正是symlink_before_migrate的用途。这样,您不需要亲自了解发布路径,但可以让厨师为您处理。