首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chef-solo:部署:访问release_path

Chef-solo:部署:访问release_path
EN

Stack Overflow用户
提问于 2012-05-08 18:23:44
回答 1查看 900关注 0票数 1

我有下面的厨师食谱:

代码语言:javascript
复制
deploy "/home/prj" do
  repo "https://path_to_repo"
  user node.project_owner
  group node.project_owner
  symlink_before_migrate({})
end

如何访问提供者的发布路径?在我的例子中,将是:/home/prj/release/20120506125222/。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 19:26:02

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

代码语言:javascript
复制
deploy "/home/prj" do
  before_migrate do
    gemfile = File.read("#{release_path}/Gemfile")
  end
end

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

代码语言:javascript
复制
current_path = "home/prj/current"
release_path = File.readlink(current_path)

大多数情况下,您可以直接访问current_path中的内容,而不必求助于解析符号链接目标。

也就是说,你通常不想在那里直接做事情。相反,鼓励您在共享目录(即/home/prk/shared)中生成额外的文件,并让chef在部署期间将这些文件符号链接到发行版中。这正是symlink_before_migrate的作用所在。这样,你实际上不需要自己知道发布路径,但可以让chef为你处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10496782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档