主厨文件评估only_if

时间:2016-12-08 13:23:33

标签: chef-recipe

即使使用'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仍然在收敛时进行评估。

1 个答案:

答案 0 :(得分:1)

您使用ruby_block错误,您的" readlines"代码应为put in the block attribute