review: don't pass unused arguments, or ctx when ctx.cluster works
review: another opportunity for dedent
review: use Remote.os.package_type rather than misc.get_system_type
review: use Remote.os.version rather than get_system_type
review: Remote.run() can take strings directly in the simple cases