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类方法.