SaltStack常用模块

本文介绍了SaltStack的各种常用模块,包括test、salt-run、file、pkg、state、salt-cp、service和network,详细讲解了每个模块的功能和常见用法,如test.echo、salt-run manage.status、file.copy、pkg.install、state.highstate、service.start和network.active_tcp等,旨在帮助用户更好地理解和使用SaltStack进行系统管理。
摘要由CSDN通过智能技术生成

文章目录


1. SaltStack模块介绍


Module是日常使用SaltStack接触最多的一个组件,其用于管理对象操作,这也是SaltStack通过Push的方式进行管理的入口,比如我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack Module来实现的。

当安装好Master和Minion包后,系统上会安装很多Module。

可以通过sys.list_modules命令查看支持的所有Module列表

[root@node01 ~]# salt '*' sys.list_modules              
node02:
    - acl
    - aliases
    - alternatives
    - ansible
    - archive
    - artifactory
    - beacons
    - bigip
    - btrfs
    - buildout
    - chroot
    ...

可以通过sys.list_functions xxx命令查看指定模块

[root@node01 ~]# salt 'node02' sys.list_functions cmd         
node02:
    - cmd.exec_code
    - cmd.exec_code_all
    - cmd.has_exec
    - cmd.powershell
    - cmd.powershell_all
    - cmd.retcode
    - cmd.run
    ...

可以通过sys.doc xxx命令查看指定模块的用法

[root@node01 ~]# salt '*' sys.doc cmd
cmd.exec_code:

    Pass in two strings, the first naming the executable language, aka -
    python2, python3, ruby, perl, lua, etc. the second string containing
    the code you wish to execute. The stdout will be returned.

    All parameters from :mod:`cmd.run_all <salt.modules.cmdmod.run_all>` except python_shell can be used.

    CLI Example:
    ...

SaltStack默认也支持一次执行多个Module,Module之间通过逗号隔开,默认传参之间也是用逗号分隔

[root@node01 ~]# salt 'node02' test.echo,cmd.run hello,ls
node02:
    ----------
    cmd.run:
        anaconda-ks.cfg
        original-ks.cfg
    test.echo:
        hello

2. SaltStack常用模块


2.1 常用模块之test


2.1.1 test.echo

返回一个字符串

[root@node01 ~]# salt 'node02' test.echo haha
node02:
    haha
[root@node01 ~]# salt 'node02' test.echo 123
node02:
    123

2.1.2 test.ping

用于确认minion启动并响应

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

2.2 常用模块之salt-run


2.2.1 salt-run manage.up

查看存活的minion

[root@node01 ~]# salt-run manage.up
- node01
- node02

2.2.2 salt-run manage.down

查看死掉的minion

[root@node01 ~]# systemctl stop salt-minion
[root@node01 ~]# salt-run manage.down   
- node01

2.2.3 salt-run manage.down removekeys=True

查看down掉的minion,并将其删除

[root@node01 ~]# salt-run manage.down removekeys=True 
- node01
[root@node01 ~]# salt-key -L
Accepted Keys:
node02
Denied Keys:
Unaccepted Keys:
Rejected Keys:

2.2.4 salt-run manage.status

查看minion的相关状态

[root@node01 ~]# salt-run manage.status 
down:
up:
    - node02

2.2.5 salt-run manage.versions

查看salt的所有master和minion的版本信息

[root@node01 ~]# salt-run manage.versions 
Master:
    3000.3
Up to date:
    ----------
    node02:
        3000.3

2.3 常用模块之file


2.3.1 file.access

测试指定文件是否存在

[root@node01 ~]# salt '*' cmd.run 'ls'
node02:
    abc
    anaconda-ks.cfg
    original-ks.cfg
[root@node01 ~]# salt '*' file.access /root/anaconda-ks.cfg f
node02:
    True
[root@node01 ~]# salt '*' file.access /root/anaconda f       
node02:
    False

检查指定文件的权限信息

[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 12
    drwxr-xr-x  2 root root 4096 Aug 19 02:57 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg
[root@node01 ~]# salt '*' file.access /root/abc r
node02:
    True
[root@node01 ~]# salt '*' file.access /root/anaconda-ks.cfg x
node02:
    False

2.3.2 file.append

将内容追加至文本末尾,若此文件不存在则会报异常

[root@node01 ~]# salt '*' cmd.run 'touch test'
node02:
[root@node01 ~]# salt '*' file.append /root/test 'this is test' '123456'
node02:
    Wrote 2 lines to "/root/test"
[root@node01 ~]# salt '*' cmd.run 'cat test'             
node02:
    this is test
    123456

2.3.3 file.basename

获取指定路径的基名,在脚本中很有用

[root@node01 ~]# salt '*' file.basename /abc/cbd/haha
node02:
    haha

2.3.4 file.dirname

获取指定路径的目录名

[root@node01 ~]# salt '*' file.dirname /abc/cbd/hah
node02:
    /abc/cbd

2.3.5 file.chattr

修改指定文件的属性

属性对文件的意义对目录的意义
a只允许在这个文件之后追加数据,
不允许任何进程覆盖或截断这个文件
只允许在这个目录下建立和修改文件,
而不允许删除任何文件
i不允许对这个文件进行任何的修改,
不能删除、更改、移动
任何的进程只能修改目录之下的文件,
不允许建立和删除文件

给指定文件添加属性

[root@node01 ~]# salt '*' cmd.run 'lsattr /root/anaconda-ks.cfg' 
node02:
    -------------e-- /root/anaconda-ks.cfg
[root@node01 ~]# salt '*' file.chattr /root/anaconda-ks.cfg operator=add attributes=ai
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'lsattr /root/anaconda-ks.cfg'
node02:
    ----ia-------e-- /root/anaconda-ks.cfg

给指定文件删除属性

[root@node01 ~]# salt '*' file.chattr /root/anaconda-ks.cfg operator=remove attributes=i
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'lsattr /root/anaconda-ks.cfg'
node02:
    -----a-------e-- /root/anaconda-ks.cfg

2.3.6 file.check.hash

检查文件是否与给定的字符串匹配。如果匹配,则返回True,否则返回False

[root@node01 ~]# salt '*' cmd.run 'md5sum /root/anaconda-ks.cfg'
node02:
    17ae95eeae402211e0bf29a6da8584d3  /root/anaconda-ks.cfg
[root@node01 ~]# salt '*' file.check_hash /root/anaconda-ks.cfg 17ae95eeae402211e0bf29a6da8584d3
node02:
    True

2.3.7 file.chgrp

修改文件的属组

[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 12
    drwxr-xr-x  3 root root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg
[root@node01 ~]# salt '*' file.chgrp /root/abc tom
node02:
    None
[root@node01 ~]# salt '*' cmd.run 'ls -l'         
node02:
    total 12
    drwxr-xr-x  3 root tom  4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg

2.2.8 file.chown

修改文件的属主和属组

[root@node01 ~]# salt '*' cmd.run 'ls -l'         
node02:
    total 12
    drwxr-xr-x  3 root tom  4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg
[root@node01 ~]# salt '*' file.chown /root/abc tom root
node02:
    None
[root@node01 ~]# salt '*' cmd.run 'ls -l'              
node02:
    total 12
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg

2.3.9 file.copy

在远程主机上复制文件或目录
为了复制目录,需要递归标志,并且默认情况下会用相同的路径覆盖目标中的文件,并保留所有其他现有文件。类似于cp -r

//复制文件
[root@node01 ~]# salt '*' file.copy /root/haha /root/hah
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls'
node02:
    abc
    anaconda-ks.cfg
    hah
    haha
    original-ks.cfg

//复制目录
[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 20
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    -rw-r--r--  1 root root   29 Aug 19 15:33 hah
    -rw-r--r--  1 root root   29 Aug 19 15:22 haha
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg
[root@node01 ~]# salt '*' file.copy /root/abc /root/cba recurse=True
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls -l'                     node02:
    total 24
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    drwxr-xr-x  3 tom  root 4096 Aug 19 15:35 cba
    -rw-r--r--  1 root root   29 Aug 19 15:33 hah
    -rw-r--r--  1 root root   29 Aug 19 15:22 haha
    -rw-------. 1 root root 1004 Aug 15 18:55 original-ks.cfg

remove_ existing将删除目标目录中的所有文件,然后从源目录复制文件。

[root@node01 ~]# salt '*' cmd.run 'ls ji' 
node02:
    abc
[root@node01 ~]# salt '*' cmd.run 'ls abc'
node02:
    ni
[root@node01 ~]# salt '*' file.copy /root/abc /root/ji recurse=True remove_existing=True
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls ji'                     node02:
    ni

2.3.10 file.find

类似 find 命令并返回符合指定条件的路径列表

匹配规则选项:

name    = path-glob                区分大小写
iname   = path-glob                不区分大小写
regex   = path-regex               区分大小写
iregex  = path-regex               不区分大小写
type    = file-types               指定匹配类型
user    = users                    指定匹配用户
group   = groups                   指定匹配组
size    = [+-]number[size-unit]    默认单位=字节
mtime   = interval                 修改后的日期
grep    = regex                    过滤文件内容

示例:

//在根下面查询文件类型名为.bak结尾,文件大小为10M以上的内容
[root@node01 ~]# salt '*' file.find / type=f name=\*.bak size=+10m

//在var目录下查询修改后的时间在30天后并且大小在10M以上的文件,打印路径,文件大小,修改后的时间
[root@node01 ~]# salt '*' file.find /var mtime=+30d size=+10m print=path,size,mtime
node02:
    |_
      - /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite
      - 31612928
      - 1588646891

//在根下面查询文件名为haha的文件,并删除
[root@node01 ~]# salt '*' file.find / name=haha delete 
node02:
    - /root/haha
[root@node01 ~]# salt '*' cmd.run 'ls /root'
node02:
    abc
    anaconda-ks.cfg
    ji

2.3.11 file.get_gid

获取指定文件的gid

[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 12
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 ji
[root@node01 ~]# salt '*' file.get_gid /root/abc
node02:
    0

2.3.12 file.get_uid

获取指定文件的uid

[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 12
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 abc
    -rw-------. 1 root root 1778 Aug 15 18:55 anaconda-ks.cfg
    drwxr-xr-x  3 tom  root 4096 Aug 19 03:09 ji
[root@node01 ~]# salt '*' file.get_uid /root/abc 
node02:
    1000

2.3.13 file.get_user

获取指定文件的用户

[root@node01 ~]# salt '*' file.get_group /root/abc
node02:
    root

2.3.14 file.get_hash

获取指定文件的hash值,该值通过 sha256 算法得来

[root@node01 ~]# salt '*' cmd.run 'sha256sum /root/haha'
node02:
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /root/haha
[root@node01 ~]# salt '*' file.get_hash /root/haha
node02:
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

2.3.15 file.get_mode

以数字的方式获取指定文件的权限

[root@node01 ~]# salt '*' cmd.run 'ls -l /root/haha'
node02:
    -rw-r--r-- 1 root root 0 Aug 20 02:28 /root/haha
[root@node01 ~]# salt '*' file.get_mode /root/haha
node02:
    0644

2.3.16 file.set_mode

修改文件权限

[root@node01 ~]# salt '*' file.set_mode /root/haha 755
node02:
    0755
[root@node01 ~]# salt '*' file.get_mode /root/haha    
node02:
    0755

2.3.17 file.get_sum

按照指定的算法计算指定文件的特征码并显示,默认使用的sha256算法。
该函数可使用的算法参数有:

  • md5
  • sha1
  • sha224
  • sha256 (default)
  • sha384
  • sha512
root@node01 ~]# salt '*' cmd.run 'sha256sum /root/haha'
node02:
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /root/haha
[root@node01 ~]# salt '*' file.get_sum /root/haha
node02:
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
[root@node01 ~]# salt '*' cmd.run 'md5sum /root/haha'
node02:
    d41d8cd98f00b204e9800998ecf8427e  /root/haha
[root@node01 ~]# salt '*' file.get_sum /root/haha md5
node02:
    d41d8cd98f00b204e9800998ecf8427e

2.3.18 file.gid_to_group

将指定git转换为组名

[root@node01 ~]# salt '*' file.gid_to_group 1000
node02:
    tom

2.3.19 file.user_to_uid

将指定用户转换为uid

[root@node01 ~]# salt '*' file.user_to_uid tom
node02:
    1000

2.3.20 file.grep

在指定文件中检索指定内容
该函数支持通配符,若在指定的路径中用通配符则必须用双引号引起来

过滤指定文件包含nobody的行
[root@node01 ~]# salt '*' file.grep /etc/passwd nobody
node02:
    ----------
    pid:
        10488
    retcode:
        0
    stderr:
    stdout:
        nobody:x:99:99:Nobody:/:/sbin/nologin

过滤指定文件包含type的行,忽略大小写
[root@node01 ~]# salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 type -- -i        
node02:
    ----------
    pid:
        10773
    retcode:
        0
    stderr:
    stdout:
        TYPE=Ethernet

过滤指定文件包含type的行,忽略大小写,并打印过滤行和过滤行的前两行
[root@node01 ~]# salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 type -- -i -B2      
node02:
    ----------
    pid:
        10846
    retcode:
        0
    stderr:
    stdout:
        IPV6INIT=yes
        BOOTPROTO=dhcp
        TYPE=Ethernet

2.3.21 file.is_blkdev

判断指定的文件是否是块设备文件

[root@node01 ~]# salt '*' file.is_blkdev /dev/sr0
node02:
    True
[root@node01 ~]# salt '*' file.is_blkdev /dev/sr1
node02:
    False

2.3.22 file.lsattr

检查并显示出指定文件的属性信息

[root@node01 ~]# salt '*' cmd.run 'lsattr /root/haha'
node02:
    -------------e-- /root/haha
[root@node01 ~]# salt '*' cmd.run 'chattr +i /root/haha'
node02:
[root@node01 ~]# salt '*' cmd.run 'lsattr /root/haha'   
node02:
    ----i--------e-- /root/haha
[root@node01 ~]# salt '*' file.lsattr /root/haha
node02:
    ----------
    /root/haha:
        - i
        - e

2.3.23 file.touch

创建空文件或更新时间戳

[root@node01 ~]# salt '*' file.touch /root/jiji
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls'
node02:
    abc
    anaconda-ks.cfg
    haha
    ji
    jiji

2.3.24 file.mkdir

创建目录

[root@node01 ~]# salt '*' file.mkdir /root/oo
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls -ld /root/oo'
node02:
    drwxr-xr-x 2 root root 4096 Aug 20 05:03 /root/oo

创建目录时设置属主和属组及权限

[root@node01 ~]# salt '*' file.mkdir /root/gg tom tom 700
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls -ld /root/gg'      
node02:
    drwx------ 2 tom tom 4096 Aug 20 05:05 /root/gg

2.3.25 file.move

移动或重命名

[root@node01 ~]# salt '*' file.move /root/hehe /root/haha
node02:
    ----------
    comment:
        '/root/hehe' moved to '/root/haha'
    result:
        True
[root@node01 ~]# salt '*' cmd.run 'ls'
node02:
    anaconda-ks.cfg
    haha

2.3.26 file.prepend

把文本插入指定文件的开头

[root@node01 ~]# salt '*' cmd.run 'cat haha'
node02:
    hello
    kiki
[root@node01 ~]# salt '*' file.prepend /root/haha '123' '456'
node02:
    Prepended 2 lines to "/root/haha"
[root@node01 ~]# salt '*' cmd.run 'cat haha'              
node02:
    123
    456
    hello
    kiki

2.3.27 file.sed

修改文本文件的内容

[root@node01 ~]# salt '*' cmd.run 'cat haha'              
node02:
    123
    456
    hello
    kiki
[root@node01 ~]# salt '*' file.sed /root/haha '123' '456'
node02:
    ----------
    pid:
        1793
    retcode:
        0
    stderr:
    stdout:
[root@node01 ~]# salt '*' cmd.run 'cat haha'             
node02:
    456
    456
    hello
    kiki
    
最后可以加上flags=xx,指定修改每行的第几个

2.3.28 file.read

查看指定文件内容

[root@node01 ~]# salt '*' file.read /root/haha
node02:
    456
    456
    hello
    kiki

2.3.29 file.readdir

查看指定目录中有哪些文件和目录,包括隐藏文件

[root@node01 ~]# salt '*' file.readdir /
node02:
    - .
    - ..
    - proc
    - etc
    - media
    - lib64
......

2.3.30 file.remove

删除指定文件或目录,类似于rm -rf命令

[root@node01 ~]# salt '*' cmd.run 'ls -l'
node02:
    total 8
    -rw-r--r-- 1 root root   19 Aug 20 05:13 haha
    drwxr-xr-x 2 root root 4096 Aug 20 05:19 jj
[root@node01 ~]# salt '*' file.remove /root/haha
node02:
    True
[root@node01 ~]# salt '*' file.remove /root/jj
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls -l'      
node02:
    total 0

2.3.31 file.symlink

给指定文件创建软连接

[root@node01 ~]# salt '*' file.symlink /root/haha /opt/xixi
node02:
    True
[root@node01 ~]# salt '*' cmd.run 'ls -ld /opt/xixi'
node02:
    lrwxrwxrwx 1 root root 10 Aug 20 05:21 /opt/xixi -> /root/haha

2.3.32 file.write

往一个指定的文件里覆盖写入指定内容

[root@node01 ~]# salt '*' file.read /root/haha            
node02:
    gg
    nn
[root@node01 ~]# salt '*' file.write /root/haha '123'
node02:
    Wrote 1 lines to "/root/haha"
[root@node01 ~]# salt '*' file.read /root/haha       
node02:
    123

2.4 常用模块之pkg


2.4.1 pkg.download

下载软件包,但不安装

[root@node01 ~]# salt '*' pkg.download wget
node02:
    ----------
    wget:
        /var/cache/yum/packages/wget-1.14-18.el7_6.1.x86_64.rpm

2.4.2 pkg.group_install

安装包组,目前仅对yum和pacman包管理器支持

[root@node01 ~]# salt '*' pkg.group_install 'Development Tools'

2.4.3 pkg.install

安装包

[root@node01 ~]# salt '*' pkg.install wget
node02:
    ----------
    wget:
        ----------
        new:
            1.14-18.el7_6.1
        old:

2.4.4 pkg.file_list

列出系统中已安装的所有包的文件

[root@node01 ~]# salt '*' pkg.file_list wget
node02:
    ----------
    errors:
    files:
        - /etc/wgetrc
        - /usr/bin/wget
        - /usr/share/doc/wget-1.14
        - /usr/share/doc/wget-1.14/AUTHORS
        - /usr/share/doc/wget-1.14/COPYING
        - /usr/share/doc/wget-1.14/MAILING-LIST
......

2.4.5 pkg.group_info

查看包组的信息

[root@node01 ~]# salt '*' pkg.group_info 'Development Tools'
node02:
    ----------
    conditional:
    default:
        - byacc
        - cscope
        - ctags
        - diffstat
        - doxygen
        - elfutils
......

2.4.6 pkg.group_list

列出系统中所有的包组

[root@node01 ~]# salt '*' pkg.group_list
node02:
    ----------
    available:
        - Additional Development
        - Anaconda Tools
        - Backup Client
        - Backup Server
        - Base
        - CentOS Linux Client product core
        - CentOS Linux ComputeNode product core
        - CentOS Linux Server product core
        - CentOS Linux Workstation product core
......

2.4.7 pkg.list_downloaded

列出已下载到本地的软件包

[root@node01 ~]# salt '*' pkg.list_downloaded
node02:
    ----------
    wget:
        ----------
        1.14-18.el7_6.1:
            ----------
            creation_date_time:
                2020-08-19T15:45:45
            creation_date_time_t:
                1597823145
            path:
                /var/cache/yum/packages/wget-1.14-18.el7_6.1.x86_64.rpm
            size:
                560272

2.4.8 pkg.owner

列出指定文件是由哪个包提供的

[root@node01 ~]# salt '*' pkg.owner /usr/bin/echo
node02:
    coreutils

2.4.9 pkg.remove

卸载指定软件

[root@node01 ~]# salt '*' pkg.remove wget
node02:
    ----------
    wget:
        ----------
        new:
        old:
            1.14-18.el7_6.1

2.4.10 pkg.upgrade

升级系统中所有的软件包或升级指定的软件包

[root@node01 ~]# salt '*' pkg.upgrade name=openssl
//若想升级系统中所有的软件包则把 name 参数去掉即可

2.5 常用模块之state


2.5.1 state.highstate

执行高级状态

[root@node01 ~]# salt '*' state.highstate
node02:
----------
          ID: apache-install
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: All specified packages are already installed
     Started: 16:33:20.354088
    Duration: 544.231 ms
     Changes:   
......

2.5.2 state.show_highstate

显示当前系统中有哪些高级状态

[root@node01 ~]# salt '*' state.show_highstate
node02:
    ----------
    apache-install:
        ----------
        __env__:
            base
        __sls__:
            web.apache.apache
        pkg:
......

2.5.3 state.show_state_usage

显示当前系统中的高级状态执行情况

[root@node01 ~]# salt '*' state.show_state_usage
node02:
    ----------
    base:
        ----------
        count_all:
            2
        count_unused:
            1
        count_used:
            1
        unused:
            - top
        used:
            - web.apache.apache

2.5.4 state.top

执行指定的top file,而不是默认的

[root@node01 ~]# salt '*' state.top abc。sls
node02:
----------
          ID: apache-install
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: All specified packages are already installed
     Started: 16:33:20.354088
    Duration: 544.231 ms
     Changes:   
......

2.6 常用模块之salt-cp


salt-cp能够很方便的把 master 上的文件批量传到 minion上

[root@node01 ~]# salt '*' cmd.run 'ls /opt' 
node02:
[root@node01 ~]# ls
anaconda-ks.cfg  vvv
[root@node01 ~]# salt-cp '*' /root/vvv /opt
node02:
    ----------
    /opt/vvv:
        True
[root@node01 ~]# salt '*' cmd.run 'ls /opt'
node02:
    vvv

2.7 常用模块之service


2.7.1 service.available

判断指定的服务是否可用

[root@node01 ~]# salt '*' service.available sshd
node02:
    True
[root@node01 ~]# salt '*' service.available mail
node02:
    False

2.7.2 service.get_all

获取所有正在运行的服务

[root@node01 ~]# salt '*' service.get_all
node02:
    - NetworkManager
    - NetworkManager-dispatcher
    - NetworkManager-wait-online
    - auditd
    - autovt@
    - basic.target
    - blk-availability
    - bluetooth.target
......

2.7.3 service.disable

设置指定服务开机不自动启动

[root@node01 ~]# salt '*' service.disable httpd 
node02:
    True
[root@node01 ~]# salt '*' service.enabled httpd 
node02:
    False

2.7.4 service.enable

设置指定服务开机自动启动

[root@node01 ~]# salt '*' service.enable httpd 
node02:
    True
[root@node01 ~]# salt '*' service.enabled httpd 
node02:
    True

2.7.5 service.reload

重新加载指定服务

[root@node01 ~]# salt '*' service.reload httpd
node02:
    True

2.7.6 service.stop

停止指定服务

[root@node01 ~]# salt '*' service.stop httpd
node02:
    True

2.7.7 service.start

启动指定服务

[root@node01 ~]# salt '*' service.start httpd
node02:
    True

2.7.8 service.restart

重启指定服务

[root@node01 ~]# salt '*' service.restart httpd
node02:
    True

2.7.9 service.status

查看指定服务状态

[root@node01 ~]# salt '*' service.status httpd
node02:
    True

//True为启动,False为停止

2.8 常用模块之network


2.8.1 network.active_tcp

返回所有活动的tcp连接

[root@node01 ~]# salt '*' network.active_tcp
node02:
    ----------
    0:
        ----------
        local_addr:
            172.16.78.128
        local_port:
            22
        remote_addr:
            172.16.78.1
        remote_port:
            50912
    1:
        ----------
        local_addr:
            172.16.78.128
        local_port:
            46930
        remote_addr:
            172.16.78.125
        remote_port:
            4505

2.8.2 network.calc_net

通过IP和子网掩码计算出网段

[root@node01 ~]# salt '*' network.calc_net 192.168.1.1 255.255.255.0
node02:
    192.168.1.0/24

2.8.3 network.connect

测试minion至某一台服务器的网络是否连通

[root@node01 ~]# salt '*' network.connect www.baidu.com 80
node02:
    ----------
    comment:
        Successfully connected to www.baidu.com (36.152.44.95) on tcp port 80
    result:
        True

2.8.4 network.default_route

查看默认路由

[root@node01 ~]# salt '*' network.default_route
node02:
    |_
      ----------
      addr_family:
          inet
      destination:
          0.0.0.0
      flags:
          UG
      gateway:
          172.16.78.2
      interface:
          eth0
      netmask:
          0.0.0.0

2.8.5 network.get_hostname

获取主机名

[root@node01 ~]# salt '*' network.get_hostname
node02:
    node02

2.8.6 network.get_route

查询到一个目标网络的路由信息

[root@node01 ~]# salt '*' network.get_route 192.168.1.1
node02:
    ----------
    destination:
        192.168.1.1
    gateway:
        172.16.78.2
    interface:
        eth0
    source:
        172.16.78.128

2.8.7 network.hw_addr

查询指定网卡的mac地址

[root@node01 ~]# salt '*' network.hw_addr eth0
node02:
    00:0c:29:93:a9:41

2.8.8 network.interface

查看指定网卡信息

[root@node01 ~]# salt '*' network.interface eth0
node02:
    |_
      ----------
      address:
          172.16.78.128
      broadcast:
          172.16.78.255
      label:
          eth0
      netmask:
          255.255.255.0

2.8.9 network.interfaces

查看当前系统中所有的网卡信息

[root@node01 ~]# salt '*' network.interfaces
node02:
    ----------
    eth0:
        ----------
        hwaddr:
            00:0c:29:93:a9:41
        inet:
            |_
              ----------
              address:
                  172.16.78.128
              broadcast:
                  172.16.78.255
              label:
                  eth0
              netmask:
                  255.255.255.0
        inet6:
            |_
              ----------
              address:
                  fe80::20c:29ff:fe93:a941
              prefixlen:
                  64
              scope:
                  link
        up:
            True
    lo:
        ----------
        hwaddr:
            00:00:00:00:00:00
        inet:
            |_
              ----------
              address:
                  127.0.0.1
              broadcast:
                  None
              label:
                  lo
              netmask:
                  255.0.0.0
        inet6:
            |_
              ----------
              address:
                  ::1
              prefixlen:
                  128
              scope:
                  host
        up:
            True

2.8.10 network.ip_addrs

返回一个IPv4的地址列表
该函数将会忽略掉127.0.0.1的地址

[root@node01 ~]# salt '*' network.ip_addrs
node02:
    - 172.16.78.128

2.8.11 network.netstat

返回所有打开的端口和状态

[root@node01 ~]# salt '*' network.netstat
node02:
    |_
      ----------
      inode:
          24891
      local-address:
          *:68
      program:
          dhclient
      proto:
          udp
      recv-q:
          0
      remote-address:
          *:*
      send-q:
          0
      user:
          0
    |_
      ----------
......
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值