厨师食谱如何检查文件是否存在

Cor*_*rey 4 ruby if-statement chef-infra chef-recipe

我刚刚开始使用Chef,我试图弄清楚在做任何事情之前如何首先检查文件是否存在.

我将文件部分放在当前用例中,我正在删除生产服务器的登录文件,例如:

file '/var/www/html/login.php' do
    action :delete
end
Run Code Online (Sandbox Code Playgroud)

但是,我希望首先检查文件是否存在,例如.

if (file_exists === true)
    file '/var/www/html/login.php' do
        action :delete
    end
end
Run Code Online (Sandbox Code Playgroud)

Kar*_*n B 12

正如评论中所提到的,对于删除操作,if如上所述,该语句是不必要的,因为如果chef没有找到要删除的文件,它将认为它已被删除.

否则,您通常希望在资源中使用防护属性(可用于所有资源),而不是将资源包装在if-then中.

file '/var/www/html/login.php' do
    only_if { ::File.exist?('/var/www/html/login.php') }
    action :touch
end
Run Code Online (Sandbox Code Playgroud)

您可能还想熟悉Ruby File类方法.