python调用salstack

简介: Python API调用saltstack

Python API调用saltstack

SaltStack本身提供salt(usr/bin/salt)来交互管理,但是去服务器上敲命令肯定不是一个长远之计,这时候python就体现了nb的功能。


Python API就是给Python提供的API使用,需要在SaltStack master上运行


1.实例代码

[root@master  ~]$python

Python 2.7.5 (default, Jul 13 2018, 13:06:57)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import salt.client

>>> local = salt.client.LocalClient()  #<salt.client.LocalClient object at 0x7f886dbdd850>

>>> local.cmd('*','cmd.run',['hostname'])#向所有minion发送命令

{'slave': 'slave'}

因此python API就是提供了向saltstack发送命令的入口。


2.通过API获取saltstack的配置文件

(1)获取master配置文件

>>> import salt.config #导入salt配置模块

>>> m_opts=salt.config.client_config('/etc/salt/master') #读取salt配置文件,得到一个字典数据


(2)获取minion配置文件

Python 2.7.5 (default, Jul 13 2018, 13:06:57)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import salt.client

>>> salt.config.minion_config('/etc/salt/minion') #读取minion配置文件,得到字典数据,通过字典方法可以查看信息


#############################################################################


Python API介绍

/usr/bin/salt默认使用的接口是LocalClient,该接口只能在salt master上使用

[root@master  ~]$python

Python 2.7.5 (default, Jul 13 2018, 13:06:57)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import salt.client

>>> local = salt.client.LocalClient()  #<salt.client.LocalClient object at 0x7f886dbdd850>

>>> local.cmd('*','cmd.run',['hostname'])#向所有minion发送命令

{'slave': 'slave'}


逐条返回结果,local.cmd_iter()

>>> ret=local.cmd_iter('*','test.ping')

>>> ret

<generator object cmd_iter at 0x7f886d455c80>

>>> for i in ret:

...     print i

...

{'slave': {'retcode': 0, 'ret': True}}


菲波那切数列

>>> local.cmd('*','test.fib',[10])

{'slave': [[0, 1, 1, 2, 3, 5, 8], 2.1457672119140625e-06]}


检查minion服务器信息

>>> local.cmd('*','cmd.run',['hostname'])

{'slave': 'slave'}

>>> local.cmd('*','cmd.run',['ifconfig'])

>>> local.cmd('*','cmd.run',['crontab -l'])

>>> local.cmd('*','cmd.run',['df -h'])


启停minion的服务,如nginx

>>> local.cmd('*','service.stop',['nginx'])

{'slave': True}

>>> local.cmd('*','service.status',['nginx'])

{'slave': False}

>>> local.cmd('*','service.start',['nginx'])

{'slave': True}


相关文章
|
缓存
npm install 一直卡着不动如何解决
npm install 一直卡着不动如何解决
6539 0
|
7月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
11月前
|
搜索推荐 安全 数据挖掘
如何利用商品详情数据挖掘消费者的潜在需求?
本文介绍了利用商品详情数据挖掘消费者潜在需求的六种方法,包括分析商品属性信息、研究消费者评价反馈、关注搜索浏览行为、对比竞争对手数据、分析购买行为及利用数据挖掘技术进行综合分析,旨在帮助企业精准捕捉市场需求,优化产品和服务。
|
网络协议 网络安全 网络架构
移动宽带不借助软件和公网服务器实现基于IPV6的内网穿透
本教程指导如何设置路由器以支持IPv6访问:首先确保上网方式为自动获取IP,接着在路由器设置中开启IPv6功能,并关闭可能阻碍连接的防火墙。最后,在光猫管理界面同样关闭防火墙以确保无障碍的IPv6访问路径。操作时请注意网络安全。
移动宽带不借助软件和公网服务器实现基于IPV6的内网穿透
|
关系型数据库 PostgreSQL
【一文搞懂PGSQL】5. 流复制
PostgreSQL流复制架构支持多种常见配置,包括基本的主从复制、结合PGPool-II的读写分离以及使用repmgr实现高可用性。基础环境中,主节点与备用节点分别位于不同IP。配置涵盖创建复制用户、调整核心参数以支持流复制,并确保归档与日志功能正常工作。从节点需通过备份恢复并配置为待机模式,以实现数据同步。此外,还介绍了如何验证复制状态及手动切换主从节点的方法,以及同步复制参数的配置细节。
|
Java 数据库 Android开发
使用Hilt完成依赖注入,让你的安卓代码层次有几层楼那么高(三)
使用Hilt完成依赖注入,让你的安卓代码层次有几层楼那么高(三)
320 0
|
边缘计算 安全 智能硬件
边缘计算:重塑医疗领域未来的关键力量
**边缘计算正重塑医疗行业,实现数据实时处理,提升诊疗效率。远程手术、智能监测及医学影像分析等应用,确保患者安全,优化医疗资源分配。技术进步推动数字化转型,为医疗创新提供新机遇,同时也带来挑战。携手迎接边缘计算赋予医疗的未来!**
|
消息中间件 NoSQL Java
Java必备面试题(100题)-八股篇
主要包括一些高频的Java面试的八股文面试题和答案
|
前端开发
class 选择器
class 选择器。
215 3
|
资源调度 DataWorks 前端开发
从0到1自建内部使用的API授权平台竟然那么容易?!
最近看了一些API的管理平台如API Layer、boomi、Odoo等平台,思考如果自己动手搭建一个API授权平台是否困难,结果透过网上的资源就能搭建起一个简易且可扩展API授权平台,且大部份依赖的功能都可免费体验,此文分享这次搭建的代码跟使用到的工具,希望想要在公司内部建立自用的API授权平台能很快地实现。
59349 9
从0到1自建内部使用的API授权平台竟然那么容易?!