2018年7月3日笔记
- state
1)state介绍
state是saltstack最核心的功能,通过预先指定好的sls文件对minion进行状态管理,支持pkg, file, network, service, user等。
2)配置管理 nginx
- saltstack常用模块和API调用
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
2018年7月3日笔记相关推荐
- 2018年7月7日笔记整理
2018年7月7日星期六 操作系统: Operating System 简称OS 软硬件资源的管理者,是世界上最复杂的软件 主流操作系统: PC机:Windows, OS X(基于Unix), L ...
- 2018年4月26日笔记
内置模块:hashlib Python的hashlib提供了常见的摘要算法,如md5,sha1, sha224, sha256, sha384, sha512等等,其中md5最为常用. 什么是摘要算法 ...
- 2018年3月29日笔记
python数据类型:字符串string"" .元组tuple() .列表list[].字典dict{} 字符串可用单引号(' ')或双引号(" ")或三引号( ...
- 2018年4月22日笔记
类封装的一般形式 class A(object): pass def main(): a = A() if __name__ = '__main__': main() 何为异常? 一般情况下,在Pyt ...
- 2018年7月5日笔记
ansible是什么? Ansible 简单的说是一个配置管理系统(configuration management system).你只需要可以使用 ssh 访问你的服务器或设备就行.它也不同于其他 ...
- 2018年6月26日笔记
salt简介 是一个配置管理工具,使用轻量级的通讯器ZMQ(ZeroMQ),使用Python写成的批量管理工具,有一个强大的远程执行命令引擎,也有一个强大的配置管理系统,叫Salt State Sys ...
- 2018年7月1日笔记
pillar Pillar在salt中是非常重要的组成部分,利用它可以完成很强大的功能,它可以指定一些信息到指定的minion上,不像grains一样是分发到所有Minion上的,它保存的数据可以是动 ...
- 2018年6月14日笔记
requests.post() 一般用法 1 import requests 2 3 wd = "python" 4 params = {"wd": " ...
- 2018年7月20日日报
姓名:任光烨 日期:2018年7月20日 今日学习任务:学习Linux操作指令,在Linux环境下完善通讯录程序,用*输出sin cos函数等. 今日完成情况:都已完成,200~300代码. 今日开发 ...
最新文章
- 脑电分析系列[MNE-Python-16]| 脑电数据的Epoching处理
- 取得前九条之后的数据
- 【学习笔记】含委托加工(转包)的标准成本估算
- Spring中的InitializingBean的使用详解
- vue中展示列表,类似formatter方法及在vue中点击页面信息事件
- XShell远程连接LInux服务器(地址端口映射方法)
- dp线和hdmi区别_HDMI铜线与光纤线有啥区别?为什么铜线传播速度更快?看完涨知识...
- python发送邮件并返回提示_python-邮件提醒功能
- 牛客《机器学习》习题收集整理
- android自动计步_自动计步器app下载
- 视频直播技术大全、直播架构、技术原理和实现思路方案整理
- JAVAFX输入法的实现
- matplotlib绘制树形图之基本配置——万能模板案例
- Linux添加硬盘并挂载(超细致)
- 个人防骗大全精选(1)
- react native 文本只显示两行
- 如何在vue中设置全局方法
- yii2安装 报错fxp/composer-asset-plugin
- 程序人生 | 阿里面试小记
- 程序员的英文代号_构建一个代号为1的聊天应用程序2
热门文章
- linux数据向量化指令,不充分SIMD向量化技术研究.PDF
- mobi格式电子书_这几种电子书格式的关系与区别,资深Kindler有必要了解了解 !...
- NodeJs数据库CRUD操作
- Android底部导航栏的实现(RadioGroup和Fragment结合使用)
- 利用HBuilderX制作手机APP应用程序之知识问答
- Android FAE工程师要求,使用AndroidStudio进行系统应用开发
- mysql 主键冲突 多个事务回滚_MySQL实战45讲Day38----自增主键不是连续的原因
- debian vbox设置_在Debian 9 Stretch系统上安装VirtualBox的两种方法
- matlabapp窗口图像_如何在一个matlab窗口上合并两个图像?
- layui引入jQuery