salt-api是我工作中经常使用的。现在想玩玩更高级的东东,从基础开始,再次积累起来~~~
参考URL:
https://pypi.org/project/saltypie/
https://www.cnblogs.com/yanjieli/p/10916198.html
一,安装salt-master, salt-minion,salt-api,salt-call
此处不表,见本人前两章blog。
二,创建认证用户,并设置密码
useradd -M -s /sbin/nologin saltapi
echo 'saltapipwd' | passwd --stdin saltapi
三,生成自签名证书用于salt-api的远程连接
salt-call --local tls.create_self_signed_cert
正常输出:
local:
Created Private Key: "/etc/pki/tls/certs/localhost.key." Created Certificate: "/etc/pki/tls/certs/localhost.crt."
四,打开salt-master配置文件的包含功能
vim /etc/salt/master
default_include: master.d/*.conf
五,创建api配置文件,将上面生成的证书写到配置文件
vim /etc/salt/master.d/api.conf
rest_cherrypy:
host: 192.168.1.211
port: 8000
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/certs/localhost.key
六,创建api认证配置文件
vim /etc/salt/master.d/auth.conf
external_auth:
pam:
saltapi:
- .*
- '@wheel'
- '@runner'
- '@jobs'
七,重启salt-master和启动salt-api
systemctl restart salt-master
systemctl start salt-api
八,使用curl测试token生成和test.ping模块命令
获取token
curl -sSk https://192.168.1.211:8000/login -H 'Accept: application/x-yaml' -d username=saltapi -d password=saltapipwd -d eauth=pam
return:
- eauth: pam
expire: 1608602843.72114
perms:
- .*
- '@wheel'
- '@runner'
- '@jobs'
start: 1608559643.721139
token: c1df246e1cda26c337872ea336faa9bdfc203b61
user: saltapi
测试ping
curl -sSk https://192.168.1.211:8000 -H 'Accept: application/x-yaml' -H 'X-Auth-Token: c1df246e1cda26c337872ea336faa9bdfc203b61' -d client=local -d tgt='*' -d fun=test.ping
return:
- 192.168.1.211: true
192.168.1.212: true
九,安装saltpie
pip install saltypie
如果找不到这个库,就到pypi上下载tar.gz文件,直接pip安装
十,测试一下这个库的基本用法
D:\Python38\python.exe D:/Code/salt-api-runner/main.py
from saltypie import Salt
salt = Salt(
url='https://192.168.1.211:8000',
username='saltapi',
passwd='saltapipwd',
trust_host=True,
eauth='pam'
)
exe_return = salt.execute(
client=Salt.CLIENT_LOCAL,
target="*",
fun='test.ping'
)
print('exe_return:', exe_return)
async_exe_return = salt.execute(
client=Salt.CLIENT_LOCAL,
target="*",
fun='test.ping',
run_async=True
)
print('async_exe_return:', async_exe_return)
jid = async_exe_return['return'][0]['jid']
print('jid:', jid)
jid_return = salt.lookup_job(jid)
print('jid_return:', jid_return)
这个比老是直接curl或是requests,g还是要方便耐用些~
D:\Python38\python.exe D:/Code/salt-api-runner/main.py
exe_return: {'return': [{'192.168.1.211': True, '192.168.1.212': True}]}
async_exe_return: {'return': [{'jid': '20201221144803499961', 'minions': ['192.168.1.211', '192.168.1.212']}]}
jid: 20201221144803499961
jid_return: {'return': [{'192.168.1.212': True, '192.168.1.211': True}]}
Process finished with exit code 0
LOOK!!!
2020-12-21 23_03_34-悬浮球.png
网友评论