首页 > 代码库 > (二)slatstack远程执行
(二)slatstack远程执行
salt执行模块
在远程主机上运行预定义的或任意命令,也称为远程执行,是saltstack的核心功能。
salt执行模块是由远程执行系统调用来执行各种各样的任务。这些模块提供的功能,如安装包,重启服务,远程命令运行,传输文件等。
远程执行命令:
命令格式
salt 目标 模块.方法 返回信息
salt ‘*‘ test.ping
salt ‘*‘ cmd.run "uptime"
salt ‘salt-client.com‘ state.highstate -v test=True #测试
salt ‘salt-client.com‘ state.highstate #主动推送
salt ‘*‘ sys.doc #查看哪些函数可用
salt ‘*‘ pkg.install vim #安装包 yum或apt
salt ‘*‘ network.interfaces #查看网络
检查存活主机
salt "*" test.ping #注意这里支持通配符哦,*表示所有,当然依旧也可以指定主机,在这里面test表示模块而ping则是方法。注意这里面的ping可不是Linux里面ICMP协议的ping是salt自己独有的东西
[root@master ~]# salt "*" test.ping
salt-client.com:
True
命令执行
#查看磁盘利用率
salt "*" cmd.run "df -h"
#其中cmd为模块而run是方法df -h则是传入的参数.此时就能够返回各个主机的磁盘使用情况。cmd下的run方法后面可以接任何shell参数。因此这个模块非常之强大,当然也非常危险。
[root@master ~]# salt "*" cmd.run "df -h"
salt-client.com:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 7.9G 1.6G 6.0G 21% /
tmpfs 242M 12K 242M 1% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
#查看内存剩余
salt "*" cmd.run "free -m"
[root@master ~]# salt "*" cmd.run "df -h"
salt-client.com:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 7.9G 1.6G 6.0G 21% /
tmpfs 242M 12K 242M 1% /dev/shm
/dev/sda1 194M 29M 155M 16% /boot
#远程创建文件夹
[root@master ~]# salt ‘*‘ cmd.run ‘mkdir -p /tmp/salt‘
salt-client.com:
远程拷贝文件
我们可以实现将本机的host文件直接复制到客户端的/tmp目录下,不必担心文件权限的问题
[root@master ~]# salt-cp ‘*‘ /etc/hosts /tmp
{‘salt-client.com‘: {‘/tmp/hosts‘: True}}
这种方法是最简单的,不必担心远程复制时文件权限的问题,这种方法可比ssh远程复制要简单的太多啦
内置的执行模块
[root@master salt]# salt ‘*‘ disk.usage #查看远程主机磁盘使用情况
salt-client.com:
----------
/:
----------
1K-blocks:
8256952
ervice模块
salt ‘*‘ service.status sshd #查看服务状态
salt ‘*‘ service.restart sshd #重启sshd服务
salt ‘*‘ service.get_all #获取minion端已启动的服务
salt-cp模块
salt-cp ‘*‘ /root/salt.txt /root/
file模块
salt ‘*‘ file.file_exists /etc/passwd #检测文件是否存在
远程代码执行
salt ‘*‘ cmd.exec_code python ‘import sys; print sys.version‘
查看执行过程
salt ‘*‘ cmd.exec_code python ‘import sys; print sys.version‘ -l debug
saltstack远程执行几个典型模块来学习:
SALT.MODULES.NETWORK
Module for gathering and managing network information
salt.modules.network.active_tcp()
CLI Example:
salt ‘*‘ network.active_tcp
salt.modules.network.arp()
Return the arp table from the minion
CLI Example:
salt ‘*‘ network.arp
SALT.MODULES.SERVICE
service is a virtual module that is fulfilled by one of the following modules:
salt.modules.service.available(name)
Returns True if the specified service is available, otherwise returns False.
CLI Example:
salt ‘*‘ service.available sshd
salt.modules.service.get_all()
Return a list of all available services
CLI Example:
salt ‘*‘ service.get_all
salt.modules.service.reload(name)
Refreshes config files by calling service reload. Does not perform a full restart.
CLI Example:
salt ‘*‘ service.reload
salt.modules.service.restart(name)
Restart the specified service
CLI Example:
salt ‘*‘ service.restart
SALT.MODULES.CP
Minion side functions for salt-cp
salt.modules.cp.cache_dir(path, saltenv=‘base‘, include_empty=False, include_pat=None, exclude_pat=None, env=None)
Download and cache everything under a directory from the master
CLI Example:
salt-cp ‘*’/etc/hots /opt/hehe
SALT.MODULES.STATE
Control the state system on the minion.
CLI Example:
salt ‘*‘ state.show_top
saltstack远程执行-返回程序
SALT.MODULES.MYSQL
Module to provide MySQL compatibility to salt.
说明:返回数据是指minion直接返回给MYSQL
salt.modules.mysql.db_create(name, character_set=None, collate=None, **connection_args)
Adds a databases to the MySQL server.
name
The name of the database to manage
character_set
The character set, if left empty the MySQL default will be used
collate
The collation, if left empty the MySQL default will be used
CLI Example:
salt ‘*‘ mysql.db_create ‘dbname‘
salt ‘*‘ mysql.db_create ‘dbname‘ ‘utf8‘ ‘utf8_general_ci‘
如何编写一个状态模块
1.放在哪里
/srv/salt/_modules
2.命令。文件名就是模块名;例如:my_disk.py
vim /_modules/my_disk.py
def list():
cmd = ‘df-h‘
ret = _salt_[‘cmd.run‘](cmd)
return ret
3.刷新
#刷新命令会把文件放在/etc/salt/minion/extmods里面
salt ‘*‘ saltutil.sync_modules
本文出自 “比尔linux运维笔记” 博客,请务必保留此出处http://chenshoubiao.blog.51cto.com/6159058/1884483
(二)slatstack远程执行