【问题标题】:Chef-solo: deploy: access to release_pathChef-solo: deploy: 访问 release_path
【发布时间】:2012-05-08 10:23:44
【问题描述】:

我有以下厨师食谱:

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/。

【问题讨论】:

    标签: ruby deployment chef-infra


    【解决方案1】:

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

    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)中生成其他文件,并让厨师在部署期间将这些文件符号链接到版本中。这正是symlink_before_migrate 的用途。这样,您实际上不需要自己知道发布路径,而是可以让厨师为您处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多