开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Saltstack-Salt常用模块及API

简介:
+关注继续查看

Salt提供了非常丰富的功能模块,涉及操作系统的基础功能、常用工具支持等,可以通过sys模块列出当前版本支持的模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
salt '*' sys.list_modules
781915e2:
 - acl
 - aliases
 - alternatives
 - apache
 - archive
 - artifactory
 - at
 - blockdev
 - btrfs
 - buildout
 - cloud
 - cmd
......

 

API的原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现的。

API实现test.ping示例:

1
2
3
4
5
>>> import salt.client
>>> client = salt.client.LocalClient()
>>> ret = client.cmd('*','test.ping')
>>> print ret
{'781915e2'True}      #结果以一个标准的Python字典形式的字符串返回,可以通过eval()函数转换成Python的字典类型,方便后续的业务逻辑处理


(1)Archive模块

功能:实现系统层面的压缩包调用,支持gunzip、gzip、rar、tar、unrar、unzip等。

示例:

1
2
3
4
5
6
7
8
9
10
salt '781915e2' cmd.run 'mkdir /opt/test'   #为被控端minion创建/opt/test目录
781915e2:
     
scp test.txt.gz root@kurol:/opt/test    #将测试的gzip文件拷贝给被控端minion
 
salt '781915e2' archive.gunzip /opt/test/test.txt.gz    #解压被控端/opt/test/test.txt.gz文件
781915e2:
     
salt '781915e2' archive.gzip /opt/test/test.txt     #压缩
781915e2:

API调用:

1
2
3
4
>>> import salt.client
>>> client = salt.client.LocalClient()
>>> client.cmd('*','archive.gunzip',['/opt/test/test.txt.gz'])
{'781915e2': []}

 

 (2)cmd模块

功能:实现远程的命令行调用执行(默认具备root操作权限,使用时需评估风险)

示例:

1
2
3
4
5
6
[root@server ~]# salt '*' cmd.run "free -m"
781915e2:
                 total       used       free     shared    buffers     cached
    Mem:           996        834        162          0        121        252
    -/+ buffers/cache:        460        536
    Swap:            0          0          0

 API调用:

1
client.cmd('*','cmd.run',['free -m])

 

(3)cp模块

功能:实现远程文件、目录的复制,以及下载URL文件等操作。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
salt '*' cp.cache_local_file /etc/hosts     #将指定被控主机的/etc/hosts文件复制到被控主机本地的salt cache目录(/var/cache/salt/minion/localfiles)
781915e2:
 /var/cache/salt/minion/localfiles/etc/hosts
  
salt '*' cp.get_dir salt://path/to/dir/ /minion/dest    #将主服务器file_roots指定位置下的目录复制到被控主机,salt:// 第一个‘/’为 配置文件base指定的根,第二个为路径分割符
781915e2:
     
salt '*' cp.get_file salt://path/to/file /minion/dest   #将主服务器file_roots指定位置下的文件复制到被控主机
781915e2:
     
salt '*' cp.get_url http://www.baidu.com /tmp/index.html     #下载URL内容到被控主机指定位置
781915e2:
    /tmp/index.html

API调用:

1
client.cmd('*','cp.get_file',['salt://path/to/file ',' /minion/dest'])

 

(4)cron模块

功能:实现被控主机的crontab操作

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
salt '*' cron.raw_cron root     #查看指定被控主机、root用户的crontab清单
781915e2:
    #secu-tcs-agent monitor, install at Sat Mar 18 15:55:40 CST 2017
    * * * * * /usr/local/sa/agent/secu-tcs-agent-mon-safe.sh /usr/local/sa/agent > /dev/null 2>&1
    */1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
    */20 * * * * /usr/sbin/ntpdate ntpupdate.tencentyun.com >/dev/null &
    30 2 * * * /www/server/panel/certbot-auto renew >> /www/server/panel/logs/certbot.log
     
salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly  #为指定的被控主机、root用户添加/usr/local/weekly任务作业
781915e2:
    new
 
salt '789880e2' cron.rm_job root /usr/local/weekly     #删除指定的被控主机、root用户crontab的/usr/local/weekly任务作业
781915e2:
    removed

API调用:

1
client.cmd('*','cron.set_job,['root','*','*','*','*','*','/usr/echo'])

 

 

 

 

       本文转自谢育政 51CTO博客,原文链接:http://blog.51cto.com/kurolz/1934033,如需转载请自行联系原作者

 

 

 

 

 


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
红外热成像仪测温模块 API 移植-I2C 和关键接口函数
API 说明文件里面有官方的移植指导,但我觉得可以把重点放在与 MLX90640 具体操作有关的几个函数上,而与标准 I2C 相关的函数和文件结构还是按照自己习惯的套路实现。这样更符合我们开发人员的可控性的习惯。
0 0
jdk17文档中的JDK API模块介绍
jdk17文档中的JDK API模块介绍
0 0
jdk17文档中的JAVA SE API模块介绍
jdk17文档中的JAVA SE API模块介绍,Java SE 是jdkAPI文档中的一部分
0 0
LyScriptTools 模块类API接口手册
LyScriptTools工具包是在LyScript模块基础上封装的工具包,其主要是二次封装LyScript插件实现的一些新功能,或者将特定功能组件拆分开形成的独立模块,此类模块可实现更加精细化的功能控制,在实际开发中推荐使用此种方式调用。
0 0
API公共模块和部门 Entity 步骤|学习笔记
快速学习 API 公共模块和部门 Entity 步骤
0 0
用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块
用好 DIV 和 API,在前端系统中轻松嵌入数据分析模块
0 0
Python编程:flask_restful模块提供api接口
Python编程:flask_restful模块提供api接口
0 0
freeswitch新增模块API
概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块。 freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块来适配各种不同的业务场景,开发效率很高,学习成本相对较低。
0 0
Vue 集成腾讯地图基础api Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记)
Vue 集成腾讯地图基础api Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记)
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CUDA Math API
立即下载
阿里云 API 精选手册(Alibaba Cloud API Playbook)
立即下载
重保场景及API安全指南
立即下载