SaltStack常用模块
SaltStack模块介绍
Module是日常使用SaltStack接触最多的一个组件,其用于管理对象操作,这也是SaltStack通过Push的方式进行管理的入口,比如我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack Module来实现的。
当安装好Master和Minion包后,系统上会安装很多Module,大家可以通过以下命令查看支持的所有Module列表:
//查看所有module列表
[root@master ~]# salt minion sys.list_modules
minion:
- acl
- aliases
- alternatives
- apache
- archive
- artifactory
- at
- baredoc
- beacons
- bigip
- btrfs
- buildout
- chroot
- cloud
- cmd
- composer
- config
- consul
- container_resource
- cp
- cron
- cryptdev
- data
- defaults
- devinfo
- devmap
- dig
- disk
- django
- dnsmasq
- dnsutil
- drbd
- environ
- ethtool
- event
- extfs
- file
- firewalld
- freezer
- gem
- genesis
- git
- glassfish
- glusterfs
- gnome
- google_chat
- grafana4
- grains
- group
- hashutil
- helm
- highstate_doc
- hosts
- http
- hue
- incron
- ini
- inspector
- introspect
- iosconfig
- ip
- ipset
- iptables
- jboss7
- jboss7_cli
- jinja
- k8s
- kernelpkg
- key
- keyboard
- kmod
- kubeadm
- locale
- locate
- log
- logrotate
- lowpkg
- lvm
- mandrill
- match
- mattermost
- mine
- minion
- modjk
- mount
- msteams
- nagios_rpc
- namecheap_domains
- namecheap_domains_dns
- namecheap_domains_ns
- namecheap_ssl
- namecheap_users
- network
- nexus
- nfs3
- nftables
- nova
- nspawn
- nxos
- nxos_api
- nxos_upgrade
- openscap
- openstack_config
- opsgenie
- out
- pagerduty
- pagerduty_util
- pam
- parallels
- partition
- peeringdb
- pillar
- pip
- pkg
- pkg_resource
- ps
- publish
- pushover
- pyenv
- qemu_img
- qemu_nbd
- quota
- raid
- random
- random_org
- rbenv
- rest_sample_utils
- restartcheck
- ret
- rsync
- rvm
- s3
- s6
- salt_proxy
- salt_version
- saltcheck
- saltutil
- schedule
- scsi
- sdb
- seed
- selinux
- serverdensity_device
- service
- shadow
- slack
- slsutil
- smbios
- smtp
- solrcloud
- sqlite3
- ssh
- state
- status
- statuspage
- supervisord
- sys
- sysctl
- sysfs
- syslog_ng
- system
- telegram
- telemetry
- temp
- test
- timezone
- tuned
- udev
- uptime
- user
- vault
- vbox_guest
- virt
- virtualenv
- vsphere
- webutil
- x509
- xfs
- xml
- zabbix
- zenoss
//查看指定module的所有function
[root@master ~]# salt minion sys.list_functions cmd
minion:
- cmd.exec_code
- cmd.exec_code_all
- cmd.has_exec
- cmd.powershell
- cmd.powershell_all
- cmd.retcode
- cmd.run
- cmd.run_all
- cmd.run_bg
- cmd.run_chroot
- cmd.run_stderr
- cmd.run_stdout
- cmd.script
- cmd.script_retcode
- cmd.shell
- cmd.shell_info
- cmd.shells
- cmd.tty
- cmd.which
- cmd.which_bin
//查看指定module的用法
[root@master ~]# salt minion 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之间通过逗号隔开,默认传参之间也是用逗号分隔,也支持指定传参分隔符号--args-separator=@即可
[root@master ~]# salt minion test.echo,cmd.run,service.status hello,hostname,salt-minion
minion:
----------
cmd.run:
minion
service.status:
True
test.echo:
hello
[root@master ~]#
SaltStack常用模块
SaltStack常用模块之network
network.active_tcp
//返回所有活动的tcp连接
[root@master ~]# salt '*' network.active_tcp
minion:
----------
0:
----------
local_addr:
192.168.197.128
local_port:
22
remote_addr:
192.168.197.1
remote_port:
51788
1:
----------
local_addr:
192.168.197.128
local_port:
49502
remote_addr:
192.168.197.131
remote_port:
4505
2:
----------
local_addr:
192.168.197.128
local_port:
22
remote_addr:
192.168.197.1
remote_port:
51789
master:
----------
0:
----------
local_addr:
192.168.197.131
local_port:
34532
remote_addr:
192.168.197.131
remote_port:
4505
1:
----------
local_addr:
192.168.197.131
local_port:
22
remote_addr:
192.168.197.1
remote_port:
51786
2:
----------
local_addr:
192.168.197.131
local_port:
22
remote_addr:
192.168.197.1
remote_port:
51787
3:
----------
local_addr:
192.168.197.131
local_port:
4505
remote_addr:
192.168.197.131
remote_port:
34532
4:
----------
local_addr:
192.168.197.131
local_port:
4505
remote_addr:
192.168.197.128
remote_port:
49502
network.calc_net
//通过IP和子网掩码计算出网段
[root@master ~]# salt '*' network.calc_net 192.168.197.128 255.255.255.0
master:
192.168.197.0/24
minion:
192.168.197.0/24
network.connect
//测试minion至某一台服务器的网络是否连通
[root@master ~]# salt '*' network.connect lol.qq.com 80
master:
----------
comment:
Successfully connected to lol.qq.com (111.47.223.165) on tcp port 80
result:
True
minion:
----------
comment:
Successfully connected to lol.qq.com (111.47.224.164) on tcp port 80
result:
True
network.default_route
//查看默认路由
[root@master ~]# salt '*' network.default_route
master:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.197.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
minion:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.197.2
interface:
ens33
netmask:
0.0.0.0
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
|_
----------
addr_family:
inet6
destination:
::/0
flags:
!n
gateway:
::
interface:
lo
netmask:
[root@master ~]#
network.get_fqdn
//查看主机的fqdn(完全限定域名)
[root@master ~]# salt '*' network.get_fqdn
minion:
minion
master:
master
[root@master ~
network.get_hostname
//获取主机名
[root@master ~]# salt '*' network.get_hostname
master:
master
minion:
minion
network.get_route
//查询到一个目标网络的路由信息
[root@master ~]# salt '*' network.get_route 192.168.197.1
master:
----------
destination:
192.168.197.1
gateway:
None
interface:
ens33
source:
192.168.197.131
minion:
----------
destination:
192.168.197.1
gateway:
None
interface:
ens33
source:
192.168.197.128
network.hw_addr
//返回指定网卡的MAC地址
[root@master ~]# salt '*' network.hw_addr ens33
master:
00:0c:29:d7:ce:07
minion:
00:0c:29:8f:21:d6
[root@master ~]# salt '*' network.hw_addr lo
master:
00:00:00:00:00:00
minion:
00:00:00:00:00:00
network.ifacestartswith
//从特定CIDR检索接口名称
[root@master ~]# salt '*' network.ifacestartswith 192.168
master:
- ens33
- virbr0
minion:
- ens33
- virbr0
[root@master ~]# salt '*' network.ifacestartswith 192.168.197
master:
- ens33
minion:
- ens33
[root@master ~]#
network.in_subnet
//判断当前主机是否在某一个网段内
[root@master ~]# salt '*' network.in_subnet 192.168.197.0/24
minion:
True
master:
True
[root@master ~]# salt '*' network.in_subnet 192.168.188.0/24
master:
False
minion:
False
[root@master ~]#
network.interface
//返回指定网卡的信息
[root@master ~]# salt '*' network.interface ens33
master:
|_
----------
address:
192.168.197.131
broadcast:
192.168.197.255
label:
ens33
netmask:
255.255.255.0
minion:
|_
----------
address:
192.168.197.128
broadcast:
192.168.197.255
label:
ens33
netmask:
255.255.255.0
network.interface_ip
//返回指定网卡的IP地址
[root@master ~]# salt '*' network.interface_ip ens33
master:
192.168.197.131
minion:
192.168.197.128
[root@master ~]#
network.interfaces
//返回当前系统中所有的网卡信息
[root@master ~]# salt '*' network.interfaces
master:
----------
ens33:
----------
hwaddr:
00:0c:29:d7:ce:07
inet:
|_
----------
address:
192.168.197.131
broadcast:
192.168.197.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::1f2f:a9f9:78a7:7cc
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
virbr0:
----------
hwaddr:
52:54:00:f1:42:78
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:f1:42:78
up:
False
minion:
----------
ens33:
----------
hwaddr:
00:0c:29:8f:21:d6
inet:
|_
----------
address:
192.168.197.128
broadcast:
192.168.197.255
label:
ens33
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::6793:315a:836e:8db0
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
virbr0:
----------
hwaddr:
52:54:00:67:57:03
inet:
|_
----------
address:
192.168.122.1
broadcast:
192.168.122.255
label:
virbr0
netmask:
255.255.255.0
up:
True
virbr0-nic:
----------
hwaddr:
52:54:00:67:57:03
up:
False
[root@master ~]#
network.ip_addrs
//返回一个IPv4的地址列表
[root@master ~]# salt '*' network.ip_addrs
master:
- 192.168.122.1
- 192.168.197.131
minion:
- 192.168.122.1
- 192.168.197.128
[root@master ~]#
network.netstat
//返回所有打开的端口和状态
[root@master ~]# salt '*' network.netstat
master:
|_
----------
inode:
3868
local-address:
0.0.0.0:111
program:
1/systemd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
40293
local-address:
192.168.122.1:53
program:
1856/dnsmasq
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
28126
local-address:
0.0.0.0:22
program:
1171/sshd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
31311
local-address:
127.0.0.1:631
program:
1165/cupsd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
8778988
local-address:
0.0.0.0:4505
program:
3501982/python3.6
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
8781968
local-address:
0.0.0.0:4506
program:
3501988/python3.6
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
8779188
local-address:
192.168.197.131:34532
program:
1914470/python3.6
proto:
tcp
recv-q:
0
remote-address:
192.168.197.131:4505
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
0
local-address:
127.0.0.1:43232
program:
-
proto:
tcp
recv-q:
0
remote-address:
127.0.0.1:4506
send-q:
0
state:
TIME_WAIT
user:
0
|_
----------
inode:
0
local-address:
192.168.197.131:40880
program:
-
proto:
tcp
recv-q:
0
remote-address:
192.168.197.131:4506
send-q:
0
state:
TIME_WAIT
user:
0
|_
----------
inode:
8993689
local-address:
192.168.197.131:22
program:
3549260/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.197.1:51786
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
9005395
local-address:
192.168.197.131:22
program:
3549303/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.197.1:51787
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
0
local-address:
127.0.0.1:43236
program:
-
proto:
tcp
recv-q:
0
remote-address:
127.0.0.1:4506
send-q:
0
state:
TIME_WAIT
user:
0
|_
----------
inode:
8776477
local-address:
192.168.197.131:4505
program:
3501982/python3.6
proto:
tcp
recv-q:
0
remote-address:
192.168.197.131:34532
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
8776517
local-address:
192.168.197.131:4505
program:
3501982/python3.6
proto:
tcp
recv-q:
0
remote-address:
192.168.197.128:49502
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
243417
local-address:
:::3306
program:
72342/mysqld
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
27
|_
----------
inode:
3870
local-address:
:::111
program:
1/systemd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
4420252
local-address:
:::8080
program:
1817280/java
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
28128
local-address:
:::22
program:
1171/sshd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
31310
local-address:
::1:631
program:
1165/cupsd
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
4418289
local-address:
127.0.0.1:8005
program:
1817280/java
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
33857
local-address:
0.0.0.0:39916
program:
976/avahi-daemon:
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
70
|_
----------
inode:
0
local-address:
192.168.197.131:45078
program:
9162184
proto:
udp
recv-q:
0
remote-address:
192.168.197.2:53
send-q:
0
user:
ESTABLISHED
|_
----------
inode:
40292
local-address:
192.168.122.1:53
program:
1856/dnsmasq
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
40289
local-address:
0.0.0.0:67
program:
1856/dnsmasq
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
0
local-address:
192.168.197.131:68
program:
8950419
proto:
udp
recv-q:
0
remote-address:
192.168.197.254:67
send-q:
0
user:
ESTABLISHED
|_
----------
inode:
3869
local-address:
0.0.0.0:111
program:
1/systemd
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
33855
local-address:
0.0.0.0:5353
program:
976/avahi-daemon:
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
70
|_
----------
inode:
32782
local-address:
127.0.0.1:323
program:
983/chronyd
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
0
local-address:
192.168.197.131:54624
program:
9162183
proto:
udp
recv-q:
0
remote-address:
192.168.197.2:53
send-q:
0
user:
ESTABLISHED
|_
----------
inode:
3871
local-address:
:::111
program:
1/systemd
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
0
|_
----------
inode:
33858
local-address:
:::60540
program:
976/avahi-daemon:
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
70
|_
----------
inode:
33856
local-address:
:::5353
program:
976/avahi-daemon:
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
70
|_
----------
inode:
32783
local-address:
::1:323
program:
983/chronyd
proto:
udp6
recv-q:
0
remote-address:
:::*
send-q:
0
user:
0
minion:
|_
----------
inode:
871039
local-address:
0.0.0.0:873
program:
152334/rsync
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
22801
local-address:
0.0.0.0:111
program:
1/systemd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
37561
local-address:
192.168.122.1:53
program:
1896/dnsmasq
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
32905
local-address:
0.0.0.0:22
program:
1086/sshd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
31286
local-address:
127.0.0.1:631
program:
1085/cupsd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
20321563
local-address:
192.168.197.128:22
program:
2733111/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.197.1:51788
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
19928383
local-address:
192.168.197.128:49502
program:
1205181/python3.6
proto:
tcp
recv-q:
0
remote-address:
192.168.197.131:4505
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
0
local-address:
192.168.197.128:52026
program:
-
proto:
tcp
recv-q:
0
remote-address:
192.168.197.131:4506
send-q:
0
state:
TIME_WAIT
user:
0
|_
----------
inode:
20322269
local-address:
192.168.197.128:22
program:
2733125/sshd:
proto:
tcp
recv-q:
0
remote-address:
192.168.197.1:51789
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
2396141
local-address:
127.0.0.1:8005
program:
436311/java
proto:
tcp6
recv-q:
0
remote-address:
:::*
send-q:
0
state:
LISTEN
user:
0
|_
----------
inode:
871040
local-address:
:::873
program:
152334/rsync
proto:
tcp6
recv-q: