1)state介绍
state是saltstack最核心的功能,通过预先指定好的sls文件对minion进行状态管理,支持pkg, file, network, service, user等。
2)配置管理 nginx
1)API:(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
5)dnsutil模块
1)installApp.py
1 def nginx(): 2 resultBean = dict() 3 __salt__[‘cp.get_file‘]("salt:_shell/app/nginx.sh /usr/local/src/installnginx.sh") 4 jid = __salt__[‘cmd.async‘] 5 cmd = "sh /usr/local/src/installnginx.sh" 6 status, output = commands.getstatusoutput(cmd) 7 if status == 0: 8 resultBean[‘code‘] = 0 9 resultBean[‘message‘] = ‘success‘ 10 resultBean[‘data‘] = output 11 else: 12 resultBean[‘code‘] = -1 13 resultBean[‘message‘] = ‘install nginx error‘ 14 resultBean[‘data‘] = output 15 return resultBean 16 17 def tomcat(): 18 pass 19 20 def keepalived(): 21 pass 22 23 def lvs(): 24 pass 25 26 def jdk(): 27 pass 28 29 def mysql(): 30 pass 31 32 def zookeeper(): 33 pass 34 35 def redis(): 36 pass
2)saltapi.py
1 import json 2 import requests 3 4 5 class SaltServer(object): 6 def __init__(self): 7 self.session = requests.session() 8 self.token = self.getToken() 9 10 11 def getToken(self): 12 url = "http://192.168.48.135:8000/login" 13 headers = {"Accept": "application/json"} 14 data = { 15 "username": "saltapi", 16 "password": "saltapi", 17 "eauth": "pam" 18 } 19 res = self.session.post(url=url, headers=headers, data=data) 20 text = res.text 21 result = json.loads(text) 22 token = result.get("return")[0].get("token") 23 return token 24 25 def runModules(self, minionid, fun, arg=None): 26 url = "http://192.168.48.135:8000" 27 data = { 28 "client": "local", 29 "tgt": minionid, 30 "fun": fun, 31 "arg": arg 32 } 33 resultBean = dict() 34 try: 35 res = self.session.post(url=url, data=data) 36 text = res.text 37 data = json.loads(text).get("return") 38 resultBean[‘code‘] = 0 39 resultBean[‘message‘] = "success" 40 resultBean[‘data‘] = data 41 except Exception as e: 42 resultBean[‘code‘] = 0 43 resultBean[‘message‘] = "success" 44 resultBean[‘data‘] = e 45 finally: 46 return resultBean 47 48 49 def runRunner(self, fun, arg=None): 50 url = "http://192.168.48.135:8000" 51 data = { 52 "client": "runner", 53 "fun": fun, 54 "arg": arg 55 } 56 resultBean = dict() 57 try: 58 res = self.session.post(url=url, data=data) 59 text = res.text 60 data = json.loads(text).get("return") 61 resultBean[‘code‘] = 0 62 resultBean[‘message‘] = "success" 63 resultBean[‘data‘] = data 64 except Exception as e: 65 resultBean[‘code‘] = 0 66 resultBean[‘message‘] = "success" 67 resultBean[‘data‘] = e 68 finally: 69 return resultBean
3)test.py
1 from lesson31.util.saltapi import SaltServer 2 3 saltServer = SaltServer() 4 5 result1 = saltServer.runModules(‘192.168.48.129‘, ‘cp.get_file‘, [‘salt://_shell/app/nginx.sh‘, ‘/usr/local/src/installnginx.sh‘]) 6 print(result1) 7 result2 = saltServer.runModules(‘192.168.48.129‘, ‘installApp.nginx‘) 8 print(result2) 9 # result2 = saltServer.runRunner(‘manage.status‘) 10 # print(result2)
原文:https://www.cnblogs.com/karl-python/p/9265915.html