The follow-along tag defines :web rather than :app:
config.vm.define :web do |web|
web.vm.box = "ubuntu/trusty64"
web.vm.hostname = "web"
web.vm.network :private_network, ip: "10.0.15.11"
That means when you follow along with "Ansible Play for Application Server", you end up with a vagrant provision that gives you:
PLAY [Set up app server] ******************************************************
skipping: no hosts matched