script.py
import json
from optparse import OptionParserdef main():
log.init("/var/log/ansible_engine/ansible_engine.log")
parser = OptionParser()
parser.add_option("-t","--type",dest="fun",help="task type:playbook or module",metavar="playbook/module")
parser.add_option("-i","--ip",dest="ip",help="ip list where tasks are excuted.", metavar="LIST")
parser.add_option("-u","--user",dest="user",help="host user name to login.")
parser.add_option("-p","--password",dest="pwd",help="host password to login",default="")
parser.add_option("-n","--name",dest="name",help="palybook path or module name")
parser.add_option("-r","--result",dest="result_file",help="write result to FILE",metavar="FILE")
parser.add_option("-a","--args",dest="args",help="args which pass to playbook or module",metavar="DICT",
default=None)
parser.add_option("-k","--private_file",dest="private_file",help="private file used to login host",
metavar="FILE",default=None)
parser.add_option("-o","--port",dest="port",help="ssh service port",metavar="LIST",default=[22])
(options, args) = parser.parse_args()
fun = options.fun
ip = json.loads(options.ip)
user = options.user
pwd = options.pwd
playbook = options.name
result_file = options.result_file
args = json.loads(options.args)
private_file = options.private_file
port = options.port
if __name__ == "__main__":
main()
調用腳本 init.py:
import json
host_name_list = ["172.28.0.2"]
args = {"a":1}
...
cmd = "python /usr/local/bin/ansible_engine/src/ansible_utils.py -t playbook -i '%s' -u '%s' -p '%s' " \
"-n '%s' -r '%s' -a '%s' -k '%s' -o '%s'" \
% (json.dumps(host_name_list),host_user,host_passwd,playbook,result_file,json.dumps(args),private_file,json.dumps(port))
status,output = commands.getstatusoutput(cmd)