Configure retry file usage and location

Adds new settings for managing retry files:
* retry_files_enabled, defaults to True
* retry_files_save_path, defaults to ~/.ansible-retry

This change was adapted from PR #5515.
pull/9404/head
Maykel Moya 11 years ago
parent 34129a223d
commit c15b47fb7b

@ -276,7 +276,7 @@ def main(args):
retries = failed_hosts + unreachable_hosts retries = failed_hosts + unreachable_hosts
if len(retries) > 0: if C.RETRY_FILES_ENABLED and len(retries) > 0:
filename = pb.generate_retry_inventory(retries) filename = pb.generate_retry_inventory(retries)
if filename: if filename:
display(" to retry, use: --limit @%s\n" % filename) display(" to retry, use: --limit @%s\n" % filename)

@ -161,6 +161,9 @@ DEFAULT_CALLABLE_WHITELIST = get_config(p, DEFAULTS, 'callable_whitelist', '
COMMAND_WARNINGS = get_config(p, DEFAULTS, 'command_warnings', 'ANSIBLE_COMMAND_WARNINGS', False, boolean=True) COMMAND_WARNINGS = get_config(p, DEFAULTS, 'command_warnings', 'ANSIBLE_COMMAND_WARNINGS', False, boolean=True)
DEFAULT_LOAD_CALLBACK_PLUGINS = get_config(p, DEFAULTS, 'bin_ansible_callbacks', 'ANSIBLE_LOAD_CALLBACK_PLUGINS', False, boolean=True) DEFAULT_LOAD_CALLBACK_PLUGINS = get_config(p, DEFAULTS, 'bin_ansible_callbacks', 'ANSIBLE_LOAD_CALLBACK_PLUGINS', False, boolean=True)
RETRY_FILES_ENABLED = get_config(p, DEFAULTS, 'retry_files_enabled', 'ANSIBLE_RETRY_FILES_ENABLED', True, boolean=True)
RETRY_FILES_SAVE_PATH = get_config(p, DEFAULTS, 'retry_files_save_path', 'ANSIBLE_RETRY_FILES_SAVE_PATH', '~/.ansible-retry')
# CONNECTION RELATED # CONNECTION RELATED
ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', None) ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', None)
ANSIBLE_SSH_CONTROL_PATH = get_config(p, 'ssh_connection', 'control_path', 'ANSIBLE_SSH_CONTROL_PATH', "%(directory)s/ansible-ssh-%%h-%%p-%%r") ANSIBLE_SSH_CONTROL_PATH = get_config(p, 'ssh_connection', 'control_path', 'ANSIBLE_SSH_CONTROL_PATH', "%(directory)s/ansible-ssh-%%h-%%p-%%r")

@ -636,19 +636,28 @@ class PlayBook(object):
buf = StringIO.StringIO() buf = StringIO.StringIO()
for x in replay_hosts: for x in replay_hosts:
buf.write("%s\n" % x) buf.write("%s\n" % x)
basedir = self.inventory.basedir() basedir = C.shell_expand_path(C.RETRY_FILES_SAVE_PATH)
filename = "%s.retry" % os.path.basename(self.filename) filename = "%s.retry" % os.path.basename(self.filename)
filename = filename.replace(".yml","") filename = filename.replace(".yml","")
filename = os.path.join(os.path.expandvars('$HOME/'), filename) filename = os.path.join(basedir, filename)
try: try:
if not os.path.exists(basedir):
os.makedirs(basedir)
fd = open(filename, 'w') fd = open(filename, 'w')
fd.write(buf.getvalue()) fd.write(buf.getvalue())
fd.close() fd.close()
return filename
except: except:
pass ansible.callbacks.display(
return None "\nERROR: could not create retry file. Check the value of \n"
+ "the configuration variable 'retry_files_save_path' or set \n"
+ "'retry_files_enabled' to False to avoid this message.\n",
color='red'
)
return None
return filename
# ***************************************************** # *****************************************************

Loading…
Cancel
Save