I've been familiarizing myself with Ansible and Puppet for use as a provisioning and configuration management tool. I may not be misunderstanding something about the way Anisble is used, but the only way I see for Ansible to ensure a consistent configuration on a regular recurring interval is to use a cron job to regularly run a playbook if I want to stick with the community sources. If I purchase Ansible Tower it looks like I can schedule playbooks there.
In comparison, when using the Puppet agent, the agent checks in with the Puppet Master on an interval, and if something has changed to deviate from what's defined on the Puppet Master, the agent will put it back as it's defined on the Puppet Master. I can do this with the community edition of Puppet if I don't have need for purchasing the commercial support.
Other than using cron jobs, is purchasing and using Ansible Tower the conventional way to use scheduled jobs to run Ansible playbooks?