Fix task-adjacent search path in roles (#83621) (#83731)

* Restore search path in the current task file’s directory for roles

(cherry picked from commit 0be66ed6dc)
pull/83848/head
Sloane Hertel 3 months ago committed by GitHub
parent 93ce28e51c
commit c150d1ed91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,2 @@
bugfixes:
- Fix using the current task's directory for looking up relative paths within roles (https://github.com/ansible/ansible/issues/82695).

@ -318,7 +318,6 @@ class DataLoader:
if (is_role or self._is_role(path)) and b_pb_base_dir.endswith(b'/tasks'): if (is_role or self._is_role(path)) and b_pb_base_dir.endswith(b'/tasks'):
search.append(os.path.join(os.path.dirname(b_pb_base_dir), b_dirname, b_source)) search.append(os.path.join(os.path.dirname(b_pb_base_dir), b_dirname, b_source))
search.append(os.path.join(b_pb_base_dir, b_source)) search.append(os.path.join(b_pb_base_dir, b_source))
else:
# don't add dirname if user already is using it in source # don't add dirname if user already is using it in source
if b_source.split(b'/')[0] != dirname: if b_source.split(b'/')[0] != dirname:
search.append(os.path.join(b_upath, b_dirname, b_source)) search.append(os.path.join(b_upath, b_dirname, b_source))

@ -0,0 +1,7 @@
- assert:
that:
- "lookup('first_found', task_adjacent) is is_file"
vars:
task_adjacent:
- files:
- relative

@ -147,3 +147,7 @@
- ishouldnotbefound.yml - ishouldnotbefound.yml
paths: paths:
- "{{role_path}}/vars" - "{{role_path}}/vars"
- name: Test relative paths in roles
include_role:
role: "{{ role_path }}/roles/a"

Loading…
Cancel
Save