diff --git a/files/file b/files/file index b1c57ff4d97..4296af2011f 100644 --- a/files/file +++ b/files/file @@ -81,8 +81,8 @@ options: default: null choices: [] description: - - path of the file to link to (applies only to C(state=link)). Will accept absolute, - relative and nonexisting paths. Relative paths are not expanded. + - path of the file to link to (applies only to C(state= link or hard)). Will accept absolute, + relative and nonexisting (with C(force)) paths. Relative paths are not expanded. seuser: required: false default: null @@ -266,8 +266,12 @@ def main(): elif state in ['link','hard']: - if not os.path.exists(src) and not force: - module.fail_json(path=path, src=src, msg='src file does not exist') + absrc = src + if not os.path.isabs(absrc): + absrc = os.path.normpath('%s/%s' % (os.path.dirname(path), absrc)) + + if not os.path.exists(absrc) and not force: + module.fail_json(path=path, src=src, msg='src file does not exist, use "force=yes" if you really want to create the link: %s' % absrc) if state == 'hard': if not os.path.isabs(src):