Variable that has the path to the current ansible-playbook that is executing?
Solution 1:
You can use playbook_dir
variable.
Solution 2:
There don't seem to be a variable which holds exactly what you want.
However, quoting the docs:
Also available,
inventory_dir
is the pathname of the directory holding Ansible’s inventory host file,inventory_file
is the pathname and the filename pointing to the Ansible’s inventory host file.
playbook_dir contains the playbook base directory.
And finally,
role_path
will return the current role’s pathname (since 1.8). This will only work inside a role.
Dependent on your setup, those or the $ pwd
-based solution might be enough.
Solution 3:
There is no build-in variable for this purpose, but you can always find out the playbook's absolute path with "pwd" command, and register its output to a variable.
- name: Find out playbook's path
shell: pwd
register: playbook_path_output
- debug: var=playbook_path_output.stdout
Now the path is available in variable playbook_path_output.stdout
Solution 4:
I was using a playbook like this to test my roles locally:
---
- hosts: localhost
roles:
- role: .
but this stopped working with Ansible v2.2.
I debugged the aforementioned solution of
---
- hosts: all
tasks:
- name: Find out playbooks path
shell: pwd
register: playbook_path_output
- debug: var=playbook_path_output.stdout
and it produced my home directory and not the "current working directory"
I settled with
---
- hosts: all
roles:
- role: '{{playbook_dir}}'
per the solution above.