Split CLI into binscript
This commit is contained in:
parent
288ce6b32e
commit
145a024d7b
2 changed files with 69 additions and 53 deletions
56
bin/ansible
Executable file
56
bin/ansible
Executable file
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
from optparse import OptionParser
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import ansible
|
||||||
|
|
||||||
|
DEFAULT_HOST_LIST = '~/.ansible_hosts'
|
||||||
|
DEFAULT_MODULE_PATH = '~/ansible'
|
||||||
|
DEFAULT_MODULE_NAME = 'ping'
|
||||||
|
DEFAULT_PATTERN = '*'
|
||||||
|
DEFAULT_FORKS = 3
|
||||||
|
DEFAULT_MODULE_ARGS = ''
|
||||||
|
|
||||||
|
class Cli(object):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def runner(self):
|
||||||
|
parser = OptionParser()
|
||||||
|
parser.add_option("-H", "--host-list", dest="host_list",
|
||||||
|
help="path to hosts list", default=DEFAULT_HOST_LIST)
|
||||||
|
parser.add_option("-L", "--library", dest="module_path",
|
||||||
|
help="path to module library", default=DEFAULT_MODULE_PATH)
|
||||||
|
parser.add_option("-F", "--forks", dest="forks",
|
||||||
|
help="level of parallelism", default=DEFAULT_FORKS)
|
||||||
|
parser.add_option("-n", "--name", dest="module_name",
|
||||||
|
help="module name to execute", default=DEFAULT_MODULE_NAME)
|
||||||
|
parser.add_option("-a", "--args", dest="module_args",
|
||||||
|
help="module arguments", default=DEFAULT_MODULE_ARGS)
|
||||||
|
parser.add_option("-p", "--pattern", dest="pattern",
|
||||||
|
help="hostname pattern", default=DEFAULT_PATTERN)
|
||||||
|
|
||||||
|
options, args = parser.parse_args()
|
||||||
|
host_list = self._host_list(options.host_list)
|
||||||
|
|
||||||
|
return ansible.Runner(
|
||||||
|
module_name=options.module_name,
|
||||||
|
module_path=options.module_path,
|
||||||
|
module_args=options.module_args,
|
||||||
|
host_list=host_list,
|
||||||
|
forks=options.forks,
|
||||||
|
pattern=options.pattern,
|
||||||
|
)
|
||||||
|
|
||||||
|
def _host_list(self, host_list):
|
||||||
|
host_list = os.path.expanduser(host_list)
|
||||||
|
return file(host_list).read().split("\n")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
result = Cli().runner().run()
|
||||||
|
print json.dumps(result, sort_keys=True, indent=4)
|
||||||
|
|
||||||
|
|
66
lib/ansible/__init__.py
Normal file → Executable file
66
lib/ansible/__init__.py
Normal file → Executable file
|
@ -1,5 +1,3 @@
|
||||||
# core
|
|
||||||
from optparse import OptionParser
|
|
||||||
import fnmatch
|
import fnmatch
|
||||||
from multiprocessing import Process, Pipe
|
from multiprocessing import Process, Pipe
|
||||||
from itertools import izip
|
from itertools import izip
|
||||||
|
@ -9,6 +7,9 @@ import json
|
||||||
# non-core
|
# non-core
|
||||||
import paramiko
|
import paramiko
|
||||||
|
|
||||||
|
# TODO -- library should have defaults, not just CLI
|
||||||
|
# update Runner constructor below to use
|
||||||
|
|
||||||
DEFAULT_HOST_LIST = '~/.ansible_hosts'
|
DEFAULT_HOST_LIST = '~/.ansible_hosts'
|
||||||
DEFAULT_MODULE_PATH = '~/ansible'
|
DEFAULT_MODULE_PATH = '~/ansible'
|
||||||
DEFAULT_MODULE_NAME = 'ping'
|
DEFAULT_MODULE_NAME = 'ping'
|
||||||
|
@ -35,43 +36,6 @@ class Pooler(object):
|
||||||
[p.join() for p in proc]
|
[p.join() for p in proc]
|
||||||
return [p.recv() for (p,c) in pipe]
|
return [p.recv() for (p,c) in pipe]
|
||||||
|
|
||||||
class Cli(object):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def runner(self):
|
|
||||||
parser = OptionParser()
|
|
||||||
parser.add_option("-H", "--host-list", dest="host_list",
|
|
||||||
help="path to hosts list", default=DEFAULT_HOST_LIST)
|
|
||||||
parser.add_option("-L", "--library", dest="module_path",
|
|
||||||
help="path to module library", default=DEFAULT_MODULE_PATH)
|
|
||||||
parser.add_option("-F", "--forks", dest="forks",
|
|
||||||
help="level of parallelism", default=DEFAULT_FORKS)
|
|
||||||
parser.add_option("-n", "--name", dest="module_name",
|
|
||||||
help="module name to execute", default=DEFAULT_MODULE_NAME)
|
|
||||||
parser.add_option("-a", "--args", dest="module_args",
|
|
||||||
help="module arguments", default=DEFAULT_MODULE_ARGS)
|
|
||||||
parser.add_option("-p", "--pattern", dest="pattern",
|
|
||||||
help="hostname pattern", default=DEFAULT_PATTERN)
|
|
||||||
|
|
||||||
options, args = parser.parse_args()
|
|
||||||
host_list = self._host_list(options.host_list)
|
|
||||||
|
|
||||||
return Runner(
|
|
||||||
module_name=options.module_name,
|
|
||||||
module_path=options.module_path,
|
|
||||||
module_args=options.module_args,
|
|
||||||
host_list=host_list,
|
|
||||||
forks=options.forks,
|
|
||||||
pattern=options.pattern,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _host_list(self, host_list):
|
|
||||||
host_list = os.path.expanduser(host_list)
|
|
||||||
return file(host_list).read().split("\n")
|
|
||||||
|
|
||||||
|
|
||||||
class Runner(object):
|
class Runner(object):
|
||||||
|
|
||||||
def __init__(self, host_list=[], module_path=None,
|
def __init__(self, host_list=[], module_path=None,
|
||||||
|
@ -144,22 +108,18 @@ class Runner(object):
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
# comamnd line usage example:
|
|
||||||
|
|
||||||
result = Cli().runner().run()
|
# TODO: if host list is string load from file
|
||||||
print json.dumps(result, sort_keys=True, indent=4)
|
|
||||||
|
|
||||||
# API usage example:
|
r = Runner(
|
||||||
|
host_list = [ '127.0.0.1' ],
|
||||||
#r = Runner(
|
module_path='~/ansible',
|
||||||
# host_list = [ '127.0.0.1' ],
|
module_name='ping',
|
||||||
# module_path='~/.ansible',
|
module_args='',
|
||||||
# module_name='ping',
|
pattern='*',
|
||||||
# module_args='',
|
forks=3
|
||||||
# pattern='*',
|
)
|
||||||
# forks=3
|
print r.run()
|
||||||
#)
|
|
||||||
#print r.run()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue