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}


相关文章
|
6月前
|
Python
python魔法方法如何应用
【4月更文挑战第12天】这个Python示例展示了类继承和方法重写。`Student`类继承自`Person`,并覆盖了`say_hello`方法。通过`super().__init__(name)`调用父类的`__init__`初始化`name`属性,`Student`添加了`age`属性,并在重写的`say_hello`中使用。创建`Student`实例`student`并调用其`say_hello`,输出定制的问候信息。
40 1
|
6月前
|
索引 Python
Python这几种魔法方法,你知道吗?
【2月更文挑战第18天】
91 6
|
3月前
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
23 2
|
5月前
|
Python
Python中调用不存在的方法
【6月更文挑战第4天】
67 1
|
6月前
|
Python
python魔法方法介绍
Python的魔法方法,如`__init__`(构造)、`__new__`(对象创建)和`__del__`(析构),是双下划线包围的预定义方法,用于赋予类特殊行为:初始化实例、定制对象创建和资源释放。通过重载这些方法,可增强类的功能。
29 0
|
6月前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件
|
Python
56 python - __new__方法
56 python - __new__方法
30 0
|
PyTorch 算法框架/工具 C语言
Python调用C++代码
今天在研究PyTorch中Tensor的一些操作的时候,发现其底层Tensor的操作都是用C++写的,并使用[pybind11](https://github.com/pybind/pybind11)进行C++和Python的桥接。所以,我就想着探索一下Python中如何调用C++代码?
168 0
|
Python
Python中的特殊方法
Python中的特殊方法
73 0