diff --git a/lib/ansible/runner/action_plugins/fetch.py b/lib/ansible/runner/action_plugins/fetch.py
index 58aa627b0e5..cd40fc5df4d 100644
--- a/lib/ansible/runner/action_plugins/fetch.py
+++ b/lib/ansible/runner/action_plugins/fetch.py
@@ -46,6 +46,8 @@ class ActionModule(object):
         options.update(utils.parse_kv(module_args))
         source = options.get('src', None)
         dest = options.get('dest', None)
+        fail_on_missing = options.get('fail_on_missing', False)
+        fail_on_missing = utils.boolean(fail_on_missing)
         if source is None or dest is None:
             results = dict(failed=True, msg="src and dest are required")
             return ReturnData(conn=conn, result=results)
@@ -73,7 +75,10 @@ class ActionModule(object):
             result = dict(msg="unable to calculate the md5 sum of the remote file", file=source, changed=False)
             return ReturnData(conn=conn, result=result)
         if remote_md5 == '1':
-            result = dict(msg="the remote file does not exist, not transferring, ignored", file=source, changed=False)
+            if fail_on_missing:
+                result = dict(failed=True, msg="the remote file does not exist", file=source)
+            else:
+                result = dict(msg="the remote file does not exist, not transferring, ignored", file=source, changed=False)
             return ReturnData(conn=conn, result=result)
         if remote_md5 == '2':
             result = dict(msg="no read permission on remote file, not transferring, ignored", file=source, changed=False)
diff --git a/library/fetch b/library/fetch
index 9b789ccdc49..72ae55cc5a7 100644
--- a/library/fetch
+++ b/library/fetch
@@ -7,8 +7,9 @@ short_description: Fetches a file from remote nodes
 description:
      - This module works like M(copy), but in reverse. It is used for fetching
        files from remote machines and storing them locally in a file tree,
-       organized by hostname. Note that if the source file is missing, it
-       returns status=ok.
+       organized by hostname. Note that this module was originally written to
+       transfer log files that were not necessarily present, therefore, by
+       default, if the source file is missing, it does not fail ; 
 version_added: "0.2"
 options:
   src:
@@ -26,6 +27,12 @@ options:
         C(/backup/host.example.com/etc/profile)
     required: true
     default: null
+  fail_on_missing:
+    description:
+      - Makes it fails when the source file is missing.
+    required: false
+    choices: [ "yes", "no" ]
+    default: "no"
 examples:
    - code: "fetch: src=/var/log/messages dest=/home/logtree"
      description: "Example from Ansible Playbooks"