diff --git a/roles/ipaclient/defaults/main.yml b/roles/ipaclient/defaults/main.yml
index a1a6d5ec6eb42668f5a8abcfd24318d0ee64402a..5a6eea644a190feb010e043ca5c7bf090bfc7e2e 100644
--- a/roles/ipaclient/defaults/main.yml
+++ b/roles/ipaclient/defaults/main.yml
@@ -5,3 +5,4 @@ ipaclient_force_join: no
 ipaclient_ntp: no
 ipaclient_mkhomedir: no
 ipaclient_kinit_attempts: 5
+ipaclient_use_otp: "false"
diff --git a/roles/ipaclient/tasks/install.yml b/roles/ipaclient/tasks/install.yml
index 46ba466ae7a64034e71b7021ad842bfc8eae53c4..756446c5085aa58030a463af8ea98362a9d70551 100644
--- a/roles/ipaclient/tasks/install.yml
+++ b/roles/ipaclient/tasks/install.yml
@@ -17,9 +17,11 @@
   register: ipadiscovery
 
 # The following block is executed when using OTP to enroll IPA client
-# ie when neither ipaclient_password not ipaclient_keytab is set
+# ie when ipaclient_use_otp is set.
 # It connects to ipaserver and add the host with --random option in order
 # to create a OneTime Password
+# If a keytab is specified in the hostent, then the hostent will be disabled
+# if ipaclient_use_otp is set.
 - block:
   - name: Install - Get a One-Time Password for client enrollment
     ipahost:
@@ -38,9 +40,9 @@
 
   - name: Install - Store the previously obtained OTP
     set_fact:
-      ipaclient_otp: "{{ipahost_output.host.randompassword if ipahost_output.host is defined else 'dummyotp' }}"
+      ipaclient_password: "{{ ipahost_output.host.randompassword if ipahost_output.host is defined }}"
 
-  when: ipaclient_password is not defined and ipaclient_keytab is not defined
+  when: ipaclient_use_otp | bool
 
 - fail: msg="At least one of password, keytab or otp must be specified"
   when: ipaclient_password is undefined and ipaclient_keytab is undefined and ipaclient_otp is undefined