我刚刚开始使用Chef,我试图弄清楚在做任何事情之前如何首先检查文件是否存在。
我将文件部分放在当前用例中,我删除了生产服务器的登录文件,例如:
file '/var/www/html/login.php' do
action :delete
end
但是,我希望首先检查文件是否存在,例如
if (file_exists === true)
file '/var/www/html/login.php' do
action :delete
end
end
答案 0 :(得分:11)
正如评论中所提到的,对于删除操作,如上所述,if
语句是不必要的,因为如果厨师没有找到要删除的文件,则会认为它已被删除。
否则,您通常希望在资源中使用guard properties(适用于所有资源),而不是将资源包装在if-then中。
file '/var/www/html/login.php' do
only_if { ::File.exist?('/var/www/html/login.php') }
action :touch
end
您可能还想熟悉the Ruby File
class methods。
答案 1 :(得分:2)
Chef的基本思想是说明系统所需的状态,然后Chef将其与实际状态进行比较,并进行所需的任何更改以使系统进入所需状态。在删除文件之前,您不需要使用if语句来检查文件是否存在;如果我没弄错的话,厨师本身应检查文件是否存在。