脚本资源上的cwd属性的主要目的

时间:2016-03-30 23:06:46

标签: chef test-kitchen

脚本资源中cwd属性的用途是什么?出于某种原因,第一个块运行但第二个块无法正常工作(即在/var/apps下克隆git仓库)

script 'clone_repo' do
  interpreter "bash"
  code <<-EOH
    cd /var/apps
    git clone https://gitlab.com/dsura/test-go-web-app.git
    EOH
  not_if { ::File.directory?("/var/apps/test-go-web-app") }
end

script 'clone_repo' do
  interpreter "bash"
  cwd ::File.dirname('/var/apps')
  code <<-EOH
    git clone https://gitlab.com/dsura/test-go-web-app.git
    EOH
  not_if { ::File.directory?("/var/apps/test-go-web-app") }
end

1 个答案:

答案 0 :(得分:1)

我认为File.directory不是一种存在的方法,但如果你的意思是cwd '/var/apps'则没有区别。它在运行子进程(也就是脚本)之前设置工作目录。这对execute资源更为重要,您可能不希望cd使用script这样的资源,但execute继承自execute 'git clone https://gitlab.com/dsura/test-go-web-app.git /var/apps/test-go-web-app' do creates '/var/apps/test-go-web-app' end ,因此它只是为了搭载而来。

你可以把整个事情简洁地写成:

git '/var/apps/test-go-web-app' do
  action :checkout
  repository 'https://gitlab.com/dsura/test-go-web-app.git'
end

或者使用git资源甚至更少:

action :checkout

你离开:sync,默认master操作会在每次Chef运行时更新到{{1}}分支,这也可能更好。