Take user input by ansible prompts

In ansible we generally execute instruction written in playbook one after another. In some cases we have to collect some data from the user that can be a sensitive data or not. In this scenario we use prompts to collect the data from the user. We write all our prompts inside vars_prompt section. By default the data we write as input is private and we can change it by private: no . Below there is a basic example of ansible prompt.

---
- hosts: webservers
  vars_prompt:
    - name: username
      prompt: "What is your username?"
      private: no
    
    - name: password_1
      prompt: "What is your password?"

Here is the result –

$ ansible-playbook prompt.yml 
What is your username?: ani
What is your password?: 

PLAY [webservers] ***************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************
ok: [localhost]

PLAY RECAP **********************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

We can even set a default value for any prompt and by default: 'value' and if there is a need of verifying any value like password then we can do this by confirm: yes . Below there is a example –

---
- hosts: webservers
  vars_prompt:
    - name: release_version
      prompt: "What is product release version?"
      private: no
      default: "1.0"
    
    - name: password_2
      prompt: "Enter password_2"
      confirm: yes

Here is the result of the above playbook –

$ ansible-playbook prompt.yml 
What is product release version? [1.0]: 2.0
Enter password_2: 
confirm Enter password_2: 
***** VALUES ENTERED DO NOT MATCH ****
Enter password_2: 
confirm Enter password_2: 

PLAY [webservers] ***************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************
ok: [localhost]

PLAY RECAP **********************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

In the above you can see that the default value in the square bracket what we have mention in the playbook and if we skip that part then ansible will take the default value. You can see that we have entered the confirmed password wrong so it is showing a warning like this **** VALUES ENTERED DO NOT MATCH **** and second time we have entered the right value that’s why everything is ok.

Thank you 🙂