mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
move the bulk of the opt parsing out of ansible/ansible-playbook and into utils
for other scripts to use.
This commit is contained in:
parent
254f98bdf5
commit
7e50d170a8
3 changed files with 48 additions and 44 deletions
29
bin/ansible
29
bin/ansible
|
@ -47,37 +47,12 @@ class Cli(object):
|
||||||
def parse(self):
|
def parse(self):
|
||||||
''' create an options parser for bin/ansible '''
|
''' create an options parser for bin/ansible '''
|
||||||
|
|
||||||
parser = OptionParser(usage = 'ansible <host-pattern> [options]')
|
parser = utils.base_parser(constants=C, runas_opts=True, async_opts=True,
|
||||||
|
output_opts=True, usage='ansible <host-pattern> [options]')
|
||||||
parser.add_option('-a', '--args', dest='module_args',
|
parser.add_option('-a', '--args', dest='module_args',
|
||||||
help="module arguments", default=C.DEFAULT_MODULE_ARGS)
|
help="module arguments", default=C.DEFAULT_MODULE_ARGS)
|
||||||
parser.add_option('-B', '--background', dest='seconds', type='int', default=0,
|
|
||||||
help='run asynchronously, failing after X seconds')
|
|
||||||
parser.add_option('-D','--debug', default=False, action="store_true",
|
|
||||||
help='enable standard error debugging of modules.')
|
|
||||||
parser.add_option('-f','--forks', dest='forks', default=C.DEFAULT_FORKS, type='int',
|
|
||||||
help='number of parallel processes to use')
|
|
||||||
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)
|
|
||||||
parser.add_option('-m', '--module-name', dest='module_name',
|
parser.add_option('-m', '--module-name', dest='module_name',
|
||||||
help="module name to execute", default=C.DEFAULT_MODULE_NAME)
|
help="module name to execute", default=C.DEFAULT_MODULE_NAME)
|
||||||
parser.add_option('-o', '--one-line', dest='one_line', action='store_true',
|
|
||||||
help='condense output')
|
|
||||||
parser.add_option('-P', '--poll', default=C.DEFAULT_POLL_INTERVAL, type='int',
|
|
||||||
dest='poll_interval', help='set the poll interval if using -B')
|
|
||||||
parser.add_option("-s", "--sudo", default=False, action="store_true",
|
|
||||||
dest='sudo', help="run operations with sudo (nopasswd)")
|
|
||||||
parser.add_option('-t', '--tree', dest='tree', default=None,
|
|
||||||
help='log output to this directory')
|
|
||||||
parser.add_option('-T', '--timeout', default=C.DEFAULT_TIMEOUT, type='int',
|
|
||||||
dest='timeout', help='set the SSH timeout in seconds')
|
|
||||||
parser.add_option('-u', '--user', default=C.DEFAULT_REMOTE_USER,
|
|
||||||
dest='remote_user', help='connect as this user')
|
|
||||||
parser.add_option('-p', '--port', default=C.DEFAULT_REMOTE_PORT, type='int',
|
|
||||||
dest='remote_port', help='set the remote ssh port')
|
|
||||||
|
|
||||||
options, args = parser.parse_args()
|
options, args = parser.parse_args()
|
||||||
self.callbacks.options = options
|
self.callbacks.options = options
|
||||||
|
|
|
@ -26,31 +26,18 @@ import ansible.playbook
|
||||||
import ansible.constants as C
|
import ansible.constants as C
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
from ansible import callbacks
|
from ansible import callbacks
|
||||||
|
from ansible import utils
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
''' run ansible-playbook operations '''
|
''' run ansible-playbook operations '''
|
||||||
|
|
||||||
# create parser for CLI options
|
# create parser for CLI options
|
||||||
parser = OptionParser()
|
usage = "ans-playbook playbook.yml"
|
||||||
parser.usage = "ans-playbook playbook.yml ..."
|
parser = utils.base_parser(constants=C, usage=usage)
|
||||||
parser.add_option('-D','--debug', default=False, action="store_true",
|
|
||||||
help='enable standard error debugging of modules.')
|
|
||||||
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("-i", "--inventory-file", dest="inventory",
|
|
||||||
help="inventory host file", default=C.DEFAULT_HOST_LIST)
|
|
||||||
parser.add_option('-e', '--extra-vars', dest='extra_vars',
|
parser.add_option('-e', '--extra-vars', dest='extra_vars',
|
||||||
help='arguments to pass to the inventory script')
|
help='arguments to pass to the inventory script')
|
||||||
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)
|
|
||||||
parser.add_option('-O', '--override-hosts', dest="override_hosts", default=None,
|
parser.add_option('-O', '--override-hosts', dest="override_hosts", default=None,
|
||||||
help="run playbook against these hosts regardless of inventory settings")
|
help="run playbook against these hosts regardless of inventory settings")
|
||||||
parser.add_option('-p', '--port', default=C.DEFAULT_REMOTE_PORT, type='int',
|
|
||||||
dest='remote_port', help='set the remote ssh port')
|
|
||||||
parser.add_option('-T', '--timeout', default=C.DEFAULT_TIMEOUT, type='int',
|
|
||||||
dest='timeout', help="set the SSH timeout in seconds")
|
|
||||||
|
|
||||||
options, args = parser.parse_args(args)
|
options, args = parser.parse_args(args)
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@ import shlex
|
||||||
import re
|
import re
|
||||||
import jinja2
|
import jinja2
|
||||||
import yaml
|
import yaml
|
||||||
|
from optparse import OptionParser
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
|
@ -30,6 +32,8 @@ except ImportError:
|
||||||
import simplejson as json
|
import simplejson as json
|
||||||
|
|
||||||
from ansible import errors
|
from ansible import errors
|
||||||
|
import ansible.constants as C
|
||||||
|
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
# UTILITY FUNCTIONS FOR COMMAND LINE TOOLS
|
# UTILITY FUNCTIONS FOR COMMAND LINE TOOLS
|
||||||
|
@ -270,3 +274,41 @@ def parse_kv(args):
|
||||||
options[k]=v
|
options[k]=v
|
||||||
return options
|
return options
|
||||||
|
|
||||||
|
def base_parser(constants=C, usage="", output_opts=False, runas_opts=False, async_opts=False):
|
||||||
|
''' create an options parser for any ansible script '''
|
||||||
|
|
||||||
|
parser = OptionParser(usage)
|
||||||
|
parser.add_option('-D','--debug', default=False, action="store_true",
|
||||||
|
help='enable standard error debugging of modules.')
|
||||||
|
parser.add_option('-f','--forks', dest='forks', default=constants.DEFAULT_FORKS, type='int',
|
||||||
|
help='number of parallel processes to use')
|
||||||
|
parser.add_option('-i', '--inventory-file', dest='inventory',
|
||||||
|
help='inventory host file', default=constants.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=constants.DEFAULT_MODULE_PATH)
|
||||||
|
parser.add_option('-T', '--timeout', default=constants.DEFAULT_TIMEOUT, type='int',
|
||||||
|
dest='timeout', help='set the SSH timeout in seconds')
|
||||||
|
parser.add_option('-p', '--port', default=constants.DEFAULT_REMOTE_PORT, type='int',
|
||||||
|
dest='remote_port', help='set the remote ssh port')
|
||||||
|
|
||||||
|
if output_opts:
|
||||||
|
parser.add_option('-o', '--one-line', dest='one_line', action='store_true',
|
||||||
|
help='condense output')
|
||||||
|
parser.add_option('-t', '--tree', dest='tree', default=None,
|
||||||
|
help='log output to this directory')
|
||||||
|
|
||||||
|
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', '--user', default=constants.DEFAULT_REMOTE_USER,
|
||||||
|
dest='remote_user', help='connect as this user')
|
||||||
|
|
||||||
|
if async_opts:
|
||||||
|
parser.add_option('-P', '--poll', default=constants.DEFAULT_POLL_INTERVAL, type='int',
|
||||||
|
dest='poll_interval', help='set the poll interval if using -B')
|
||||||
|
parser.add_option('-B', '--background', dest='seconds', type='int', default=0,
|
||||||
|
help='run asynchronously, failing after X seconds')
|
||||||
|
|
||||||
|
return parser
|
||||||
|
|
Loading…
Reference in a new issue