Just a nit to update the error message.  Maybe "box '#{host_name}' may not be a 'master', 'database' or 'console', but has roles ..."  or something.