The way that vars_files are included probably changed somewhere in the Ansible 2.x lifecycle, rendering the example in the book a bit broken.
The playbook is:
---
- hosts: example
vars_files:
- "apache_default.yml"
- "apache_{{ ansible_os_family }}.yml"
tasks:
- service: name={{ apache }} state=running
But that doesn't work.
Instead, we used include_vars in today's livestream, with with_first_found, which worked a bit better. I need to update that example in the book so it works correctly and doesn't mislead readers.
Also ansible_os_family is not CentOS, it's RedHat, on Cent OS (ansible_distribution is CentOS, however).