厨师食谱如何检查文件是否存在
Chef Recipe How To Check If File Exists
我刚开始使用 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
如评论中所述,对于删除操作,if
语句是不必要的,因为如果 chef 没有找到要删除的文件,它将假定它已被删除。
否则,您通常希望在资源中使用 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。
Chef 的基本思想是您声明系统的理想状态,然后 Chef 将其与实际状态进行比较,并做出使系统进入理想状态所需的任何更改。在删除文件之前,您不需要 if 语句来检查文件是否存在;如果我没记错的话,Chef 自己应该检查文件是否存在。
我刚开始使用 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
如评论中所述,对于删除操作,if
语句是不必要的,因为如果 chef 没有找到要删除的文件,它将假定它已被删除。
否则,您通常希望在资源中使用 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。
Chef 的基本思想是您声明系统的理想状态,然后 Chef 将其与实际状态进行比较,并做出使系统进入理想状态所需的任何更改。在删除文件之前,您不需要 if 语句来检查文件是否存在;如果我没记错的话,Chef 自己应该检查文件是否存在。