首页 > 代码库 > (二)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远程执行