57. Python saltstack 二次开发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了57. Python saltstack 二次开发相关的知识,希望对你有一定的参考价值。

回顾上一节:

grains 和 pillar 都是定义他们的属性的

grains 定义在minion端(定义完必须重启minion,才能生效)

pillar  定义在master端(无需重启即可生效)

saltstack的api

Salt-api有两种方式:

第一种:是函数的形式,有人家定义好的函数,我们可以直接调用,直接写python代码调用函数或者类就可以了。

第二种:形式是salt-api有封装好的http协议的,我们需要启动一个服务端。



登录官网查看文档:

技术分享图片


文档内容,如下:

技术分享图片


安装salt-api:

yum install –y salt-api


1.加载master的配置文件

import  salt.config
master_opts = salt.config.client_config('/etc/salt/master')
print('master_opts')


master端,如果想查看配置文件的参数属性:

技术分享图片


2. 加载minion的配置文件

import salt.config
minion_opts = salt.config.minion_config('/etc/salt/minion')
print ('minion_opts')


minion端,想看配置文件内的参数属性:

技术分享图片


3. 在master上执行各种模块:

>>> import salt.client
>>> local = salt.client.LocalClient('/etc/salt/minion')
>>> local.cmd('*', "test.ping")

返回:

{'192.168.48.129': True}


执行命令:

>> local.cmd('*', "cmd.run", "w")

【返回的是一个字典形式,很容易后期处理数据用】

{'192.168.48.129': ' 12:17:38 up  5:58,  1 user,  load average: 0.00, 0.01, 0.05\nUSER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT\nroot     pts/0    192.168.48.1     11:14    2:50   0.89s  0.89s python'}


如果一次要执行多个模块:

一种方式:

>>> local.cmd('*', ['test.ping', 'cmd.run'], [[], ['whoami']])

结果:

{'192.168.48.129': {'test.ping': True, 'cmd.run': 'root'}}

【test.ping 对应 [](空列表),cmd.run 对应 whoami 命令】

另一种方式:(不推荐这样用,还不如调两次,这样逻辑性不好)

>>> local.cmd('*', ['test.ping', 'cmd.run'], [[], ['w; df -h']])


自定义的模块:

模块目录必须创建:

mkdir -p /srv/salt/_modules
cd  /srv/salt/_modules

创建 jd.py 文件:

vim jd.py

#!/usr/bin/python
#coding:utf-8
def hello(name):
return {"name": name}

写完所有module要记得同步一下:

salt '*' saltutil.sync_all    #同步所有

或者

salt '*' saltutil.sync_modules    #只同步modules


技术分享图片


执行命令获取结果:

# salt '*' jd.hello  ajing

结果输出,如图:

技术分享图片


python中这样获取:

技术分享图片



以上是关于57. Python saltstack 二次开发的主要内容,如果未能解决你的问题,请参考以下文章

56. Python saltstack 二次开发

Saltstack的API接口与调用方式

Saltstack 安装部署和模块使用

day58——Saltstack二次开发

saltstack 安装

saltstack