diff --git a/lib/ansible/callbacks.py b/lib/ansible/callbacks.py index fe2c8f4b1b..731d244718 100755 --- a/lib/ansible/callbacks.py +++ b/lib/ansible/callbacks.py @@ -20,6 +20,7 @@ import utils import sys +import getpass ####################################################### @@ -176,6 +177,12 @@ class PlaybookCallbacks(object): def on_task_start(self, name, is_conditional): print utils.task_start_msg(name, is_conditional) + def on_vars_prompt(self, varname, private=True): + msg = 'input for %s: ' % varname + if private: + return getpass.getpass(msg) + return raw_input(msg) + def on_setup_primary(self): print "SETUP PHASE ****************************\n" diff --git a/lib/ansible/playbook.py b/lib/ansible/playbook.py index 5af26f4242..1cd9a5b547 100755 --- a/lib/ansible/playbook.py +++ b/lib/ansible/playbook.py @@ -95,6 +95,13 @@ class PlayBook(object): vars = play.get('vars', {}) if type(vars) != dict: raise errors.AnsibleError("'vars' section must contain only key/value pairs") + vars_prompt = play.get('vars_prompt', {}) + if type(vars_prompt) != dict: + raise errors.AnsibleError("'vars_prompt' section must contain only key/value pairs") + for vname in vars_prompt: + print vars_prompt[vname] + # FIXME - need some way to know that this prompt should be getpass or raw_input + vars[vname] = self.callbacks.on_vars_prompt(vname) return vars # *****************************************************