以下代码实现的功能:

通过saltstack的httpapi在minion上安装软件。

vim saltapi.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import json import requests class SaltServer(object):
def __init__(self):
self.session = requests.session()
self.token = self.getToken() # 获取token
def getToken(self):
url = "http://192.168.127.165:8000/login"
headers = {"Accept": "application/json"}
data = {
"username": "saltapi",
"password": "saltapi",
"eauth": "pam"
}
res = self.session.post(url=url, headers=headers, data=data)
text = res.text
result = json.loads(text)
token = result.get("return")[0].get("token")
return token # 执行modules
def runModules(self, minionid, fun, arg=None):
url = "http://192.168.127.165:8000"
data = {
"client": "local",
"tgt": minionid,
"fun": fun,
"arg": arg
}
resultBean = dict()
try:
res = self.session.post(url=url, data=data)
text = res.text
data = json.loads(text).get("return")
resultBean['code'] = 0
resultBean['message'] = "success"
resultBean['data'] = data
except Exception as e:
resultBean['code'] = 0
resultBean['message'] = "success"
resultBean['data'] = e
finally:
return resultBean # 执行runner
def runRunner(self, fun, arg=None):
url = "http://192.168.127.165:8000"
data = {
"client": "runner",
"fun": fun,
"arg": arg
}
resultBean = dict()
try:
res = self.session.post(url=url, data=data)
text = res.text
data = json.loads(text).get("return")
resultBean['code'] = 0
resultBean['message'] = "success"
resultBean['data'] = data
except Exception as e:
resultBean['code'] = 0
resultBean['message'] = "success"
resultBean['data'] = e
finally:
return resultBean
vim installAPP.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- # nginx.sh里面就写了一句简单的yum install -y nginx import SaltServer saltServer = SaltServer() result1 = saltServer.runModules('192.168.127.166', 'cp.get_file', ['salt://_shell/app/nginx.sh', '/usr/local/src/installnginx.sh']) # 把安装nginx脚本同步到minion端
print(result1)
result2 = saltServer.runModules('192.168.127.166', 'installApp.nginx')
print(result2)

执行 python installApp.py之后,就可以在192.168.127.166上面看到nginx已经安装好了。

saltstack二次开发(三)的更多相关文章

  1. saltstack自动化运维系列⑩SaltStack二次开发初探

    saltstack自动化运维系列⑩SaltStack二次开发初探 1.当salt运行在公网或者网络环境较差的条件下,需要配置timeout时间vim /etc/salt/master timeout: ...

  2. python之saltstack二次开发

    一.salt的概念 salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行).一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选 ...

  3. saltstack二次开发(一)

    Saltstack简介 Salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的包被安装,指定的服务在运行),一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则 ...

  4. saltstack二次开发(二)

    Saltstack的api Salt-api有两种方式,一种是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了.第二种形式是salt-api有封装好的ht ...

  5. ccflow表机构与运行机制(二次开发必看)

    驰骋工作流引擎,工作流程管理系统,表结构与运行机制. ------------------------------------------------------- 前言: 1, ccflow 有自动 ...

  6. 【工业串口和网络软件通讯平台(SuperIO)教程】三.二次开发流程

    1.1    二次开发流程图 1.2    引用相关组件 找到“开发包”,引用里边的相关组件.如下图: 1.3    开发设备驱动模块 1.3.1    开发发送协议驱动 继承SuperIO.Devi ...

  7. TFS二次开发系列:三、TFS二次开发的第一个实例

    首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...

  8. C#/AutoCAD 2018/ObjectArx/二次开发添加图形对象步骤和添加直线的例子(三)

    1.创建一个图形对象的步骤如下(1)得到创建对象的图形数据库:(2)在内存中创建实体类的一个对象:(3)定义一个指向当前数据库的事务处理:(4)打开图形数据库的块表:(5)打开一个存储实体的块表记录( ...

  9. spss C# 二次开发 学习笔记(三)——Spss .Net 开发

    Spss .Net 二次开发的学习过程暂停了一段时间,今天开始重启. 之前脑残的不得了,本想从网上下载一个Spss的安装包,然后安装学习.于是百度搜索Spss,在百度搜索框的列表中看到Spss17.S ...

随机推荐

  1. django2.1---admin 修改模块的名字为中文显示

    只需要写两个地方 1.应用下的__init__.py default_app_config = 'user.apps.UserConfig' 2.应用下apps.py from django.apps ...

  2. el-upload源码修改跳坑

    之前给element-ui提了一个问题,结果没有鸟我,没办法,只能修改源码来满足需求了 (备注:element-ui2依然没有修改,为了迎合产品还是要改源码) 本文讨论的组件属性仅限于list-typ ...

  3. input点击链接另一个页面,各种操作。

    1.链接到某页<input type="button" name="Submit" value="确 定" class="b ...

  4. Visual Studio 2017 插件扩展

    “工具善其事,必先利其器!装好这些插件让vs更上一层楼” ReSharper : 首先的是Resharper,这个基本是目前是我开发过程中必备的工具集,唯一的缺点就是吃内存,所以你的内存要是低于8G, ...

  5. @Html.Raw() 与Newtonsoft.Json.JsonConvert.SerializeObject()

    一.后台 ViewBag.TypeList = typeList; 二.前台C# @{     var typeListFirst = ViewBag.TypeList;} 三.前台js中 var t ...

  6. 【游记】Noip2018

    Day -1 Noip还有1天,加油!!! 今天上午就肝一肝树形DP,维护一些玄学差分,和前缀数组什么的吧 下午以及晚上搞一搞记忆化搜索和最朴素的DFS这样子吧. 还要打一打板子也是极有必要的qwq ...

  7. Listary Pro- 文件浏览与搜索增强的超级神器

    Listary 是一款 Windows 文件浏览增强工具,为 Windows 资源管理器增加智能命令.最近文档以及收藏功能.文件小,功能强大.秒杀系统自带搜索功能!! 它是一款非常优秀的 Window ...

  8. 在IDEA里创建web项目,以及web 项目部署

    在IDEA里创建web项目很简单: 1).先创建一个简单的maven项目,这个步骤我就不说了. 2).maven项目创建完后,因为我们需要的是web项目,因此我们要在pom.xml文件里设置packa ...

  9. Linux常用基本命令( touch )

    touch命令: 作用:创建空文件,或者改变文件的时间戳属性 格式: touch [option] [file] 1,同时创建一个或者多个空文件 ghostwu@dev:~/linux/mkdir$ ...

  10. H5 页面下拉加载更多

    1.html页面: <body onload="index_roll()"> ... </body> 2.js <script type=" ...