nitpick: not DRY, maybe consider having a cloud mixin ( i can see ssh keys handling and userdata also moving there)