Saltstack-Salt常用模块及API
2017-06-26 16:40
344 查看
Salt提供了非常丰富的功能模块,涉及操作系统的基础功能、常用工具支持等,可以通过sys模块列出当前版本支持的模块。
123456789101112131415salt '*' sys.list_modules781915e2: - acl - aliases - alternatives - apache - archive - artifactory - at - blockdev - btrfs - buildout - cloud - cmd......
API的原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现的。API实现test.ping示例:12345>>> 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等。
示例:
12345678910salt '781915e2' cmd.run 'mkdir /opt/test' #为被控端minion创建/opt/test目录781915e2: scp test.txt.gz root@kurol:/opt/test #将测试的gzip文件拷贝给被控端minionsalt '781915e2' archive.gunzip /opt/test/test.txt.gz #解压被控端/opt/test/test.txt.gz文件781915e2: salt '781915e2' archive.gzip /opt/test/test.txt #压缩781915e2:API调用:1234>>> import salt.client>>> client = salt.client.LocalClient()>>> client.cmd('*','archive.gunzip',['/opt/test/test.txt.gz']){'781915e2': []}
(2)cmd模块
功能:实现远程的命令行调用执行(默认具备root操作权限,使用时需评估风险)
示例:
1234567[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调用:
1client.cmd('*','cmd.run',['free -m])
(3)cp模块
功能:实现远程文件、目录的复制,以及下载URL文件等操作。
示例:
12345678910111213salt '*' 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.htmlAPI调用:1client.cmd('*','cp.get_file',['salt://path/to/file ',' /minion/dest'])
(4)cron模块
功能:实现被控主机的crontab操作
示例:
123456789101112131415salt '*' 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: newsalt '789880e2' cron.rm_job root /usr/local/weekly #删除指定的被控主机、root用户crontab的/usr/local/weekly任务作业781915e2: removedAPI调用:1client.cmd('*','cron.set_job,['root','*','*','*','*','*','/usr/echo'])
123456789101112131415salt '*' sys.list_modules781915e2: - acl - aliases - alternatives - apache - archive - artifactory - at - blockdev - btrfs - buildout - cloud - cmd......
API的原理是通过调用master client模块,实例化一个LocalClient对象,再调用cmd()方法来实现的。API实现test.ping示例:12345>>> 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等。
示例:
12345678910salt '781915e2' cmd.run 'mkdir /opt/test' #为被控端minion创建/opt/test目录781915e2: scp test.txt.gz root@kurol:/opt/test #将测试的gzip文件拷贝给被控端minionsalt '781915e2' archive.gunzip /opt/test/test.txt.gz #解压被控端/opt/test/test.txt.gz文件781915e2: salt '781915e2' archive.gzip /opt/test/test.txt #压缩781915e2:API调用:1234>>> import salt.client>>> client = salt.client.LocalClient()>>> client.cmd('*','archive.gunzip',['/opt/test/test.txt.gz']){'781915e2': []}
(2)cmd模块
功能:实现远程的命令行调用执行(默认具备root操作权限,使用时需评估风险)
示例:
1234567[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调用:
1client.cmd('*','cmd.run',['free -m])
(3)cp模块
功能:实现远程文件、目录的复制,以及下载URL文件等操作。
示例:
12345678910111213salt '*' 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.htmlAPI调用:1client.cmd('*','cp.get_file',['salt://path/to/file ',' /minion/dest'])
(4)cron模块
功能:实现被控主机的crontab操作
示例:
123456789101112131415salt '*' 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: newsalt '789880e2' cron.rm_job root /usr/local/weekly #删除指定的被控主机、root用户crontab的/usr/local/weekly任务作业781915e2: removedAPI调用:1client.cmd('*','cron.set_job,['root','*','*','*','*','*','/usr/echo'])
相关文章推荐
- Saltstack系列3:Saltstack常用模块及API
- Saltstack常用模块及API(4)
- Saltstack-Salt常用模块及API
- Saltstack常用模块及API之查看主机支持的模块清单
- saltstack之(四)远程执行及常用模块
- 运维工具SaltStack之二常见模块及API
- saltstack的常用操作(三) 命令与模块的执行
- 集中化管理平台saltstack--常用模块(2)
- 【SaltStack】一些常用模块举例
- SaltStack 学习笔记 - 第四篇: SaltStack常用模块
- saltstack常用模块
- saltstack自动化运维系列③之saltstack的常用模块使用
- saltstack常用操作(七)---beacons模块的使用
- 自动化运维之saltstack(三)常用模块使用之file
- saltstack自动化运维系列③之saltstack的常用模块使用
- Saltstack 远程执行和常用模块
- saltstack管理八之常用执行模块
- salt常用模块及API
- saltstack常用操作----salt-api 实现 通过http请求远程调用saltstack的步骤
- SaltStack runners模块分析之cache模块