I think there are a lot of different takes on this. Mine uses playbooks, if you are interested https://github.com/laktak/tome