diff --git a/plugins/modules/ipauser.py b/plugins/modules/ipauser.py
index dcea92f4678184cf1ee1f1dadf3428cbb30cb70e..74fc11de76224e43dfd39a9ecf6a0523da06471e 100644
--- a/plugins/modules/ipauser.py
+++ b/plugins/modules/ipauser.py
@@ -1449,6 +1449,10 @@ def main():
                                 del args["userpassword"]
                             if "random" in args:
                                 del args["random"]
+                        # if using "random:false" password should not be
+                        # generated.
+                        if not args.get("random", True):
+                            del args["random"]
                         if "noprivate" in args:
                             del args["noprivate"]
 
diff --git a/tests/user/test_user.yml b/tests/user/test_user.yml
index 8af9a80a46201cfd8d111edb6c94ff5c89a71098..1300b3b3ef5e4713cb27afcfd0c6c4507c49e47a 100644
--- a/tests/user/test_user.yml
+++ b/tests/user/test_user.yml
@@ -87,6 +87,17 @@
     register: result
     failed_when: not result.changed or result.failed
 
+  - name: Ensure user presence with 'random:false'
+    ipauser:
+      ipaadmin_password: SomeADMINpassword
+      ipaapi_context: "{{ ipa_context | default(omit) }}"
+      name: pinky
+      first: pinky
+      last: Acme
+      random: false
+    register: result
+    failed_when: result.changed or result.failed
+
   - name: Set street, again
     ipauser:
       ipaadmin_password: SomeADMINpassword