ansible的动态传入hosts

code:

 1 import ansible.runner
 2 import ansible.inventory
 3 import loggingMod.init_logger
 4 import json
 5 import sys
 6 
 7 class rootUser():
 8 
 9     def __init__(self, ipAddress, userName, remoteUser):
10         self.ipAddress = [ ipAddress ]
11         self.userName = userName
12         self.remoteUser = remoteUser
13 
14         '''init base info'''
15         self.webInventory = ansible.inventory.Inventory(self.ipAddress)
16         self.remotePort = 22
17         self.timeOut = 10
18         self.priKeyFile = '/home/%s/.ssh/id_rsa'
19 
20     def printLog(self, output):
21         for (hostname, result) in output["contacted"].items():
22             if 'failed' in result:
23                 logging.error('there is a error[%s]' % result['msg'])
24                 sys.exit(1)
25             elif 'stderr' in result:
26                 if result['stderr']:
27                   logging.error('there is a error [%s]' % result['stderr'])
28                     sys.exit(1)
29 
30     def checkUserExist(self):
31         checkrunner = ansible.runner.Runner(
32             module_name='shell',
33             module_args='id -u %s' % self.userName,
34             timeout=self.timeOut,
35             remote_port=self.remotePort,
36             remote_user=self.remoteUser,
37 #           private_key_file=self.priKeyFile,
38             become=True,
39             become_user='root',
40             inventory = self.webInventory
41         )
42         self.output = checkrunner.run()
43         self.printLog(self.output)
44 
45     def addRoot(self):
46         self.checkUserExist()
47         runner = ansible.runner.Runner(
48             module_name='user',
49             module_args='name=%s groups=root append=no' % self.userName,
50             timeout=self.timeOut,
51             remote_port=self.remotePort,
52             remote_user=self.remoteUser,
53             private_key_file=self.priKeyFile,
54             become=True,
55             become_user='root',
56             inventory = self.webInventory
57         )
58 
59         self.result = runner.run()
60         self.printLog(self.result)
61         self.info('success')
62 
63     def removeRoot(self):
64         rmRunner = ansible.runner.Runner(
65             module_name='shell',
66             module_args='gpasswd -d %s root' % self.userName,
67             timeout=self.timeOut,
68             remote_port=self.remotePort,
69             remote_user=self.remoteUser,
70             private_key_file=self.priKeyFile,
71             become=True,
72             become_user='root',
73             inventory = self.webInventory
74         )
75         self.rmOutput = rmRunner.run()
76         self.printLog(self.rmOutput)
77         self.info('success remove root privilege')
78 
79 
80 theUser = rootUser('192.168.35.125', 'mr.right', 'raingolee')
81 theUser.removeRoot()

 

posted @ 2017-01-22 17:46  evil_liu  阅读(468)  评论(0)    收藏  举报