add --step option to ansible-playbooks to let people step through a playbook
one by one - asking for confirmation along the way. also allows to 'continue' after a certain point
This commit is contained in:
parent
1289dd602d
commit
7687c2caf8
3 changed files with 21 additions and 2 deletions
|
@ -72,6 +72,8 @@ def main(args):
|
||||||
help="do a playbook syntax check on the playbook, do not execute the playbook")
|
help="do a playbook syntax check on the playbook, do not execute the playbook")
|
||||||
parser.add_option('--list-tasks', dest='listtasks', action='store_true',
|
parser.add_option('--list-tasks', dest='listtasks', action='store_true',
|
||||||
help="do list all tasks that would be executed")
|
help="do list all tasks that would be executed")
|
||||||
|
parser.add_option('--step', dest='step', action='store_true',
|
||||||
|
help="one-step-at-a-time: confirm each task before running")
|
||||||
|
|
||||||
options, args = parser.parse_args(args)
|
options, args = parser.parse_args(args)
|
||||||
|
|
||||||
|
@ -111,6 +113,8 @@ def main(args):
|
||||||
|
|
||||||
stats = callbacks.AggregateStats()
|
stats = callbacks.AggregateStats()
|
||||||
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
|
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
|
||||||
|
if options.step:
|
||||||
|
playbook_cb.step = options.step
|
||||||
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
|
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
|
||||||
|
|
||||||
pb = ansible.playbook.PlayBook(
|
pb = ansible.playbook.PlayBook(
|
||||||
|
|
|
@ -464,7 +464,20 @@ class PlaybookCallbacks(object):
|
||||||
msg = "TASK: [%s]" % name
|
msg = "TASK: [%s]" % name
|
||||||
if is_conditional:
|
if is_conditional:
|
||||||
msg = "NOTIFIED: [%s]" % name
|
msg = "NOTIFIED: [%s]" % name
|
||||||
print banner(msg)
|
|
||||||
|
if hasattr(self, 'step') and self.step:
|
||||||
|
resp = raw_input('Perform task: %s (y/n/c): ' % name)
|
||||||
|
if resp.lower() in ['y','yes']:
|
||||||
|
self.skip_task = False
|
||||||
|
print banner(msg)
|
||||||
|
elif resp.lower() in ['c', 'continue']:
|
||||||
|
self.skip_task = False
|
||||||
|
self.step = False
|
||||||
|
print banner(msg)
|
||||||
|
else:
|
||||||
|
self.skip_task = True
|
||||||
|
|
||||||
|
|
||||||
call_callback_module('playbook_on_task_start', name, is_conditional)
|
call_callback_module('playbook_on_task_start', name, is_conditional)
|
||||||
|
|
||||||
def on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
def on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
||||||
|
|
|
@ -301,6 +301,8 @@ class PlayBook(object):
|
||||||
''' run a single task in the playbook and recursively run any subtasks. '''
|
''' run a single task in the playbook and recursively run any subtasks. '''
|
||||||
|
|
||||||
self.callbacks.on_task_start(utils.template(play.basedir, task.name, task.module_vars, lookup_fatal=False), is_handler)
|
self.callbacks.on_task_start(utils.template(play.basedir, task.name, task.module_vars, lookup_fatal=False), is_handler)
|
||||||
|
if hasattr(self.callbacks, 'skip_task') and self.callbacks.skip_task:
|
||||||
|
return True
|
||||||
|
|
||||||
# load up an appropriate ansible runner to run the task in parallel
|
# load up an appropriate ansible runner to run the task in parallel
|
||||||
results = self._run_task_internal(task)
|
results = self._run_task_internal(task)
|
||||||
|
|
Loading…
Reference in a new issue