即使使用'only_if'检查,尝试File.readlines也会收敛:
ruby_block 'set_archive_mode' do
only_if (File.exists?(node['ORACLE_DATABASE']['ORACLE_ADMIN'] + '/' +
node['ORACLE_DATABASE']['ORACLE_SID'] + '/database_archive_verify.test'))
if File.readlines(node['ORACLE_DATABASE']['ORACLE_ADMIN'] + '/' +
node['ORACLE_DATABASE']['ORACLE_SID'] +
'/database_archive_verify.test').grep(/^NOARCHIVELOG/).size > 0
node.run_state['archive_mode'] = 'noarchivelog'
else
node.run_state['archive_mode'] = 'archivelog'
end
end
代码只需要根据文件内容设置node.run_state瞬态属性。我尝试了几种不同的方法,导致各种错误。上面的代码包含'only_if',但File.readlines仍然在收敛时进行评估。