From 710d085def70d42a51a7cf5962280153136c9d6c Mon Sep 17 00:00:00 2001 From: John Kleint Date: Mon, 7 May 2012 11:37:50 -0400 Subject: [PATCH] Fix non-sudo execution, add --sudo-user to ansible-playbook. --- bin/ansible | 12 +++++------- bin/ansible-playbook | 5 +++++ lib/ansible/playbook.py | 2 +- lib/ansible/utils.py | 2 ++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/bin/ansible b/bin/ansible index 42de6e1d3b5..0f5c668eb84 100755 --- a/bin/ansible +++ b/bin/ansible @@ -52,8 +52,6 @@ class Cli(object): parser.add_option('-m', '--module-name', dest='module_name', help="module name to execute (default=%s)" % C.DEFAULT_MODULE_NAME, default=C.DEFAULT_MODULE_NAME) - parser.add_option('-U','--sudo-user', dest='sudo_user', help='desired sudo user (default=root)', - default=C.DEFAULT_SUDO_USER) options, args = parser.parse_args() self.callbacks.options = options @@ -72,19 +70,19 @@ class Cli(object): inventory_manager = inventory.Inventory(options.inventory) hosts = inventory_manager.list_hosts(pattern) if len(hosts) == 0: - print >>sys.stderr, "No hosts matched" - sys.exit(1) + print >>sys.stderr, "No hosts matched" + sys.exit(1) sshpass = None sudopass = None - sudouser = options.sudo_user if options.ask_pass: sshpass = getpass.getpass(prompt="SSH password: ") if options.ask_sudo_pass: sudopass = getpass.getpass(prompt="sudo password: ") + options.sudo = True if options.sudo_user: - options.sudo=True - + options.sudo = True + options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER if options.tree: utils.prepare_writeable_dir(options.tree) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index f1263328cf3..b40964c8d55 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -50,6 +50,10 @@ def main(args): sshpass = getpass.getpass(prompt="SSH password: ") if options.ask_sudo_pass: sudopass = getpass.getpass(prompt="sudo password: ") + options.sudo = True + if options.sudo_user: + options.sudo = True + options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER override_hosts = None if options.override_hosts: override_hosts = options.override_hosts.split(",") @@ -77,6 +81,7 @@ def main(args): timeout=options.timeout, transport=options.connection, sudo=options.sudo, + sudo_user=options.sudo_user, sudo_pass=sudopass, extra_vars=extra_vars ) diff --git a/lib/ansible/playbook.py b/lib/ansible/playbook.py index b9449bf4266..d664880db55 100644 --- a/lib/ansible/playbook.py +++ b/lib/ansible/playbook.py @@ -62,7 +62,7 @@ class PlayBook(object): runner_callbacks = None, stats = None, sudo = False, - sudo_user = 'root', + sudo_user = C.DEFAULT_SUDO_USER, extra_vars = None): """ diff --git a/lib/ansible/utils.py b/lib/ansible/utils.py index 92c321ce46e..1b3b355c43c 100644 --- a/lib/ansible/utils.py +++ b/lib/ansible/utils.py @@ -309,6 +309,8 @@ def base_parser(constants=C, usage="", output_opts=False, runas_opts=False, asyn if runas_opts: parser.add_option("-s", "--sudo", default=False, action="store_true", dest='sudo', help="run operations with sudo (nopasswd)") + parser.add_option('-U', '--sudo-user', dest='sudo_user', help='desired sudo user (default=root)', + default=None) # Can't default to root because we need to detect when this option was given parser.add_option('-u', '--user', default=constants.DEFAULT_REMOTE_USER, dest='remote_user', help='connect as this user (default=%s)' % constants.DEFAULT_REMOTE_USER)