diff --git a/bin/ansible-playbook b/bin/ansible-playbook index 04f880dc3a..05d555b4dd 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -21,6 +21,7 @@ import sys import ansible.playbook import ansible.constants as C +import getpass from optparse import OptionParser ####################################################### @@ -33,21 +34,32 @@ def main(args): parser.usage = "ans-playbook playbook.yml ..." parser.add_option('-f','--forks', dest='forks', default=C.DEFAULT_FORKS, type='int', help='set the number of forks to start up') - parser.add_option("-m", "--module-path", dest="module_path", + parser.add_option("-i", "--inventory-file", dest="inventory", + help="inventory host file", default=C.DEFAULT_HOST_LIST) + parser.add_option("-k", "--ask-pass", default=False, action="store_true", + help="ask for SSH password") + parser.add_option("-M", "--module-path", dest="module_path", help="path to module library", default=C.DEFAULT_MODULE_PATH) + options, args = parser.parse_args(args) if len(args) == 0: - print >> sys.stderr, "playbook path is a required argument" - return 1 + print >> sys.stderr, "playbook path is a required argument" + return 1 + + sshpass = None + if options.ask_pass: + sshpass = getpass.getpass(prompt="SSH password: ") # run all playbooks specified on the command line for playbook in args: pb = ansible.playbook.PlayBook( playbook=playbook, + host_list=options.inventory, module_path=options.module_path, forks=options.forks, - verbose=True + verbose=True, + remote_pass=sshpass, ) pb.run() diff --git a/lib/ansible/playbook.py b/lib/ansible/playbook.py index 396ca9ac35..f236a33497 100755 --- a/lib/ansible/playbook.py +++ b/lib/ansible/playbook.py @@ -242,8 +242,7 @@ class PlayBook(object): handlers = pg['handlers'] user = pg.get('user', C.DEFAULT_REMOTE_USER) - host_file = pg.get('inventory', '/etc/ansible/hosts') - self.host_list, groups = ansible.runner.Runner.parse_hosts(host_file) + self.host_list, groups = ansible.runner.Runner.parse_hosts(self.host_list) if self.verbose: print "PLAY [%s] ****************************\n" % pattern diff --git a/lib/ansible/runner.py b/lib/ansible/runner.py index 8d28dfb201..aa7b7d5afb 100755 --- a/lib/ansible/runner.py +++ b/lib/ansible/runner.py @@ -272,10 +272,11 @@ class Runner(object): # module, call the appropriate executor function ok, conn = self._connect(host) + if not ok: + return [ host, False, conn ] + tmp = self._get_tmp_path(conn) result = None - if not ok: - result = [ host, False, conn ] if self.module_name not in [ 'copy', 'template' ]: result = self._execute_normal_module(conn, host, tmp) elif self.module_name == 'copy':