Saltstack远程执行

1. Saltstack的远程执行概念

远程执行是Saltstack的核心功能之一。主要使用Salt模块批量给选定的minion端执行相应的命令,并获得返回结果。

举例1:如上文例子“判断Salt的minion是否存活?”

[root@master ~]# salt '*' test.ping
master:
    True
node01:
    True
salt:是saltstack自带的一个命令
* :表示目标主机,这里表示所有目标主机
test.ping:test是saltstack中的一个模块,ping则是这个模块下面的一个方法

举例:2:saltstack使用cmd.run模块远程执行shell命令

[root@master ~]# salt '*' cmd.run 'uptime'
node01:
     21:03:48 up 8 min,  1 user,  load average: 0.00, 0.17, 0.16
master:
     21:03:48 up 8 min,  1 user,  load average: 0.20, 0.55, 0.36
[root@master ~]# salt 'node01' cmd.run 'uptime'
node01:
     21:04:01 up 8 min,  1 user,  load average: 0.00, 0.16, 0.15

2.Salt命令的结构语法

 

 

目标主机target匹配方式:

  • 与minionID有关的采用,通配符、列表和正则;
  • 与minionID无关的采用,IP、复合、分组、Grains、Pillar

远程执行常用模块(点击所有模块列表):

  • test 模块:用于测试
  • user模块:用于用户管理
  • cmd模块:用于执行任意shell命令
  • pkg模块:用于软件包管理
  • file模块:用于配置
  • service模块:用于服务管理

3.Salt命令的目标主机target匹配方式

3.1 通配符匹配

[root@master ~]#  salt '*' test.ping
node01:
    True
master:
    True
[root@master ~]# salt 'master' test.ping
master:
    True
[root@master ~]# salt 'ma*' test.ping
master:
    True
[root@master ~]# salt 'node0[0|1]' test.ping
node01:
    True
[root@master ~]# salt 'node0[!0]' test.ping
node01:
    True
[root@master ~]# salt 'node0?' test.ping
node01:
    True

3.2 列表匹配

[root@master ~]# salt -L 'master,node01' test.ping
node01:
    True
master:
    True

3.3 正则匹配 

[root@master ~]# salt -E '^no.*' test.ping
node01:
    True
[root@master ~]# salt -E '^ma' test.ping
master:
    True

3.4 IP匹配 

[root@master ~]# salt -S '192.168.1.220' test.ping
master:
    True
[root@master ~]# salt -S '192.168.1.0/24' test.ping
node01:
    True
master:
    True

3.5 复合匹配 

[root@master ~]# salt -C 'G@os:Centos and S@192.168.1.220' test.ping
master:
    True
[root@master ~]# salt -C 'G@os:Centos and S@192.168.1.221' test.ping
node01:
    True

3.6 分组匹配 

[root@master ~]# vi /etc/salt/master
nodegroups:
  webserver: 'master,node01'
  dbserver: 'node02'  #必须要有空格缩进。
[root@master ~]# systemctl restart salt-master
[root@master ~]# salt -N 'webserver' test.ping
node01:
    True
master:
    True

3.7 Grains匹配

[root@master ~]# salt -G 'os:Centos' test.ping
master:
    True
node01:
    True
[root@master ~]# salt -G 'localhost:master' test.ping
master:
    True

4.Salt命令的远程执行常用模块

4.1 test模块 

功能:用于测试。

[root@master ~]# salt '*' test.ping
node01:
    True
master:
    True

4.2 user模块 

功能:详见官方

salt '*' user.add name <uid> <gid> <groups> <home> <shell>
[root@master ~]# salt '*' user.add testuser
node01:
    True
master:
    True

4.3 cmd模块 

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

[root@master ~]# salt '*' cmd.run 'free -m'
master:
                  total        used        free      shared  buff/cache   available
    Mem:            972         544         271           7         157         262
    Swap:           999           0         999
node01:
                  total        used        free      shared  buff/cache   available
    Mem:            972         168         650           7         154         641
    Swap:           999           0         999

4.4 pkg模块 

功能:软件包状态管理,会根据操作系统不同,选择对应的安装方式(如CentOS系统默认使用yum,Debian系统默认使用apt-get)

[root@master ~]#  salt '*' pkg.install "vsftpd"  #安装
[root@master ~]# salt '*' pkg.remove "vsftpd"  #卸载
 
[root@master ~]# salt '*' pkg.latest_version "vsftpd"  #安装最新版本
 
[root@master ~]# salt '*' pkg.upgrade "vsftpd"   #更新软件包
 
[root@master ~]# salt '*' pkg  #查看帮助手册
[root@master ~]#  salt '*' pkg.install "vsftpd"
node01:
    ----------
    vsftpd:
        ----------
        new:
            3.0.2-25.el7
        old:
master:
    ----------
    vsftpd:
        ----------
        new:
            3.0.2-25.el7
        old:

4.5 file模块   

功能:被控主机常见的文件操作,包括文件读写、权限、查找、校验。

#校验所有minion主机文件的加密信息,支持md5、sha1、sha224、shs256、sha384、sha512加密算法
[root@master ~]# salt '*' file.get_sum /etc/passwd md5
 
#修改所有minion主机/etc/passwd文件的属组、用户权限、等价于chown root:root /etc/passwd
[root@master ~]]# salt '*' file.chown /etc/passwd root root
 
#获取所有minion主机/etc/passwd的stats信息
[root@master ~]]# salt '*' file.stats /etc/passwd
 
#获取所有minion主机/etc/passwd的权限mode,如755,644
[root@master ~]]# salt '*' file.get_mode /etc/passwd
 
#修改所有minion主机/etc/passwd的权限mode为0644
[root@master ~]]# salt '*' file.set_mode /etc/passwd 0644
 
#在所有minion主机创建/opt/test目录
[root@master ~]]# salt '*' file.mkdir /opt/test
 
#在所有minion主机穿件/tmp/test.conf文件
[root@master ~]]# salt '*' file.touch /tmp/test.conf
 
#将所有minion主机/tmp/test.conf文件追加内容'maxclient 100'
[root@master ~]]# salt '*' file.append /tmp/test.conf 'maxclient 100'
 
#删除所有minion主机的/tmp/test.conf文件
[root@master ~]]# salt '*' file.remove /tmp/test.conf

4.6 service模块   

功能:被控主机程序包服务管理.

#开启(enable)禁用(disable)
salt '*' service.enable <service name>
salt '*' service.disabled <service name>
 
#reload、restart、start、stop、status操作
salt '*' service.reload <service name>
salt '*' service.restart <service name>
salt '*' service.start <service name>
salt '*' service.stop <service name>
salt '*' service.status <service name>
[root@master ~]# salt '*' service.disable vsftpd
node01:
    True
master:
    True
[root@master ~]# salt '*' service.enable vsftpd
node01:
    True
master:
    True

 

posted @ 2020-04-10 21:39  星火撩原  阅读(242)  评论(0编辑  收藏  举报