From 5268d49badb83716c08861dde0d0fb788132ad7d Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson <daniel@hozac.com> Date: Mon, 28 Jan 2013 17:41:43 +0100 Subject: [PATCH] Add sudo_flags configuration option to alter sudo behaviour Default to -H to set $HOME appropriately. --- CHANGELOG.md | 5 +++-- examples/ansible.cfg | 3 +++ lib/ansible/constants.py | 1 + lib/ansible/utils/__init__.py | 5 +++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18aef02..92cbdab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,11 +14,12 @@ New modules: New config settings: -* default_sudo_exe parameter can be set in config to use sudo alternatives -* added when_failed and when_changed +* sudo_exe parameter can be set in config to use sudo alternatives +* sudo_flags parameter can alter the flags used with sudo New playbook/language features: +* added when_failed and when_changed * task includes can now be of infinite depth * when_set and when_unset can take more than one var (when_set: $a and $b and $c) * added the with_sequence lookup plugin diff --git a/examples/ansible.cfg b/examples/ansible.cfg index 0ba9957..ab8dd20 100644 --- a/examples/ansible.cfg +++ b/examples/ansible.cfg @@ -76,6 +76,9 @@ remote_port=22 sudo_exe=sudo +# the default flags passed to sudo +# sudo_flags=-H + # how to handle hash defined in several places # hash can be merged, or replaced # if you use replace, and have multiple hashes named 'x', the last defined diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py index 7bd7577..b43986e 100644 --- a/lib/ansible/constants.py +++ b/lib/ansible/constants.py @@ -92,6 +92,7 @@ DEFAULT_MANAGED_STR = get_config(p, DEFAULTS, 'ansible_managed', None, DEFAULT_SYSLOG_FACILITY = get_config(p, DEFAULTS, 'syslog_facility', 'ANSIBLE_SYSLOG_FACILITY', 'LOG_USER') DEFAULT_KEEP_REMOTE_FILES = get_config(p, DEFAULTS, 'keep_remote_files', 'ANSIBLE_KEEP_REMOTE_FILES', '0') DEFAULT_SUDO_EXE = get_config(p, DEFAULTS, 'sudo_exe', 'ANSIBLE_SUDO_EXE', 'sudo') +DEFAULT_SUDO_FLAGS = get_config(p, DEFAULTS, 'sudo_flags', 'ANSIBLE_SUDO_FLAGS', '-H') DEFAULT_HASH_BEHAVIOUR = get_config(p, DEFAULTS, 'hash_behaviour', 'ANSIBLE_HASH_BEHAVIOUR', 'replace') DEFAULT_ACTION_PLUGIN_PATH = shell_expand_path(get_config(p, DEFAULTS, 'action_plugins', 'ANSIBLE_ACTION_PLUGINS', '/usr/share/ansible_plugins/action_plugins')) diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index 139e158..53b9b98 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -590,6 +590,7 @@ def make_sudo_cmd(sudo_user, executable, cmd): # the -p option. randbits = ''.join(chr(random.randint(ord('a'), ord('z'))) for x in xrange(32)) prompt = '[sudo via ansible, key=%s] password: ' % randbits - sudocmd = '%s -k && %s -S -p "%s" -u %s %s -c %s' % ( - C.DEFAULT_SUDO_EXE, C.DEFAULT_SUDO_EXE, prompt, sudo_user, executable or '$SHELL', pipes.quote(cmd)) + sudocmd = '%s -k && %s %s -S -p "%s" -u %s %s -c %s' % ( + C.DEFAULT_SUDO_EXE, C.DEFAULT_SUDO_EXE, C.DEFAULT_SUDO_FLAGS, + prompt, sudo_user, executable or '$SHELL', pipes.quote(cmd)) return ('/bin/sh -c ' + pipes.quote(sudocmd), prompt) -- libgit2 0.26.0