如果厨师食谱内的声明

Bla*_*bbs 0 chef-infra

如何在厨师食谱中使用if语句?

我想只在文件夹不存在的情况下克隆存储库,或者如果它不存在则更好地克隆它,如果存在则拉出它

我有一个代码:

bash 'clone-mercurial-repository' do
    if !File.exist?("/root/projects/some_repo")
        code <<-EOH
            cd '/root/projects/'
            hg clone https://bitbucket.org/some_repo
        EOH
    end
end
Run Code Online (Sandbox Code Playgroud)

这段代码无论如何都被执行了,我也试过把not if它放在最后,但它也没有用.

此致,布莱克

Nil*_*ndt 5

您可以使用only_if和not_if控制任何资源(包括bash资源)的执行.

例如:

bash 'clone-mercurial-repository' do
    code <<-EOH
        cd '/root/projects/'
        hg clone https://bitbucket.org/some_repo
    EOH
    not_if { File.exist?("/root/projects/some_repo") }
end
Run Code Online (Sandbox Code Playgroud)

与您的问题无关,您可能需要查看mercurial cookbook以避免使用bash资源.