add vars_prompt to playbooks
- this allows some vars to be prompted for at the start of the playbook setup - defaults to no output since this would mostly be used for passwords
This commit is contained in:
parent
04aecdcf34
commit
bcef25f7eb
2 changed files with 14 additions and 0 deletions
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
# *****************************************************
|
||||
|
|
Loading…
Reference in a new issue