IMHO - this should be reversed to get rid of the not or not.  

If node.attribute?('cloud') &&  node['cloud'].attribute?('provider')
  setup
else
  log "Cloud attribute not set" unless node.attribute?('cloud')
  log "Cloud provider not set" unless node['cloud'].attribute?('provider')
  log "Unknown cloud, skipping ephemeral LVM setup"
end