What is the issue?
You have a include statement inside a role but when the playbook is running on Vagrant, that path doesn't exist!!
Tree:
├── playbook.yml
└── roles
├── base
│ ├── README.md
│ ├── defaults
│ │ └── main.yml
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ ├── main.yml
│ │ ├── setup_debian.yml
│ │ └── setup_rhel.yml
│ ├── templates
│ └── vars
│ └── main.yml
In tasks/main.yml we have:
- name: Trying to update base installation on RedHat
include: setup_rhel.yml
when: ansible_os_family == 'RedHat'
- name: Trying to update base installation on Debian
include: setup_debian.yml
when: ansible_os_family == 'Debian'
If you run the playbook.yml in a Vagrant box you could see this error message:
FAILED! => {"failed": true, "reason": "the file_name '/Users/vicente/vagrant/ansible/playbooks/setup_debian.yml' does not exist, or is not readable"}
Well, this is the new tasks/main.yml to solve it:
---
# Include OS-specific installation tasks.
- name: Trying to update base installation on RedHat
include: "{{ role_path }}/tasks/setup_rhel.yml"
when: ansible_os_family == 'RedHat'
- name: Trying to update base installation on Debian
include: "{{ role_path }}/tasks/setup_debian.yml"
when: ansible_os_family == 'Debian'
:)