SaltStack常用的模块
SaltStack模块介绍
Module是日常使用SaltStack接触最多的一个组件,其用于管理对象操作,这也是SaltStack通过Push的方式进行管理的入口,比如我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack Module来实现的。
当安装好Master和Minion包后,系统上会安装很多Module,大家可以通过以下命令查看支持的所有Module列表:
查看本机所有的模块 #只有一部分想要看所有模块去官网上查看
[root@server1 ~]# salt 'server1' sys.list_modulesserver1:
- acl
- aliases
- alternatives
- archive
- artifactory
- baredoc
- beacons
- bigip
- btrfs
- buildout
- chroot
- cloud
- cmd
- composer
- config
- consul
- container_resource
- cp
- cron
- cryptdev
- data
- defaults
- devinfo
- devmap
- disk
- django
- dnsmasq
- dnsutil
- drbd
- environ
- ethtool
- event
- extfs
- file
- firewalld
- freezer
- gem
- genesis
- glassfish
- 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
- libcloud_compute
- libcloud_dns
- libcloud_loadbalancer
- libcloud_storage
- 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
- 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
- random
- random_org
- rbenv
- rest_sample_utils
- restartcheck
- ret
- rvm
- s3
- s6
- salt_proxy
- salt_version
- saltcheck
- saltutil
- schedule
- scsi
- sdb
- seed
- 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
- tls
- travisci
- tuned
- udev
- uptime
- user
- vault
- vbox_guest
- virtualenv
- vsphere
- x509
- xfs
- xml
- zabbix
- zenoss
查看指定module的所有function
[root@server1 ~]# salt 'server1' sys.list_functions cmd
server1:
- 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@server1 ~]# salt 'server1' 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:
salt '*' cmd.exec_code ruby 'puts "cheese"'
salt '*' cmd.exec_code ruby 'puts "cheese"' args='["arg1", "arg2"]' env='{"FOO": "bar"}'
.......
.......
//SaltStack默认也支持一次执行多个Module,Module之间通过逗号隔开,默认传参之间也是用逗号分隔,
[root@server1 ~]# salt 'node1' test.echo,cmd.run,service.status holle,hostname,salt-minion
node1:
----------
cmd.run:
node1
service.status:
True
test.echo:
holle
SaltStack常用模块
SaltStack常用模块之network
network.active_tcp 返回所有的活动连接
[root@server1 ~]# salt 'node1' network.active_tcp
node1:
----------
0:
----------
local_addr:
192.168.244.135
local_port:
33806
remote_addr:
192.168.244.131
remote_port:
4505
1:
----------
local_addr:
192.168.244.135
local_port:
22
remote_addr:
192.168.244.1
remote_port:
52918
network.calc_net 通过IP和子网掩码计算出网段
[root@server1 ~]# salt 'node1' network.calc_net 192.168.244.0 255.255.255.0
node1:
192.168.244.0/24
network.connect 测试minion至某一台服务器的网络是否连通
[root@server1 ~]# salt 'node1' network.connect baidu.com 80
node1:
----------
comment:
Successfully connected to baidu.com (220.181.38.148) on tcp port 80
result:
True
network.default_route 查看默认路由
[root@server1 ~]# salt 'node1' network.default_route
node1:
|_
----------
addr_family:
inet
destination:
0.0.0.0
flags:
UG
gateway:
192.168.244.2
interface:
ens160
netmask:
0.0.0.0
network.get_fqdn 查看主机的fqdn(完全限定域名)
[root@server1 ~]# salt 'node1' network.get_fqdn
node1:
node1
network.get_hostname 获取主机名
[root@server1 ~]# salt 'node1' network.get_hostname
node1:
node1
network.get_route 查询到一个目标网络的路由信息
[root@server1 ~]# salt 'node1' network.get_route 192.168.244.2
node1:
----------
destination:
192.168.244.2
gateway:
None
interface:
ens160
source:
192.168.244.135
network.hw_addr 返回指定网卡的MAC地址
[root@server1 ~]# salt 'node1' network.hw_addr ens160
node1:
00:0c:29:36:3e:51
network.ifacestartswith 从特定CIDR检索接口名称
[root@server1 ~]# salt 'node1' network.ifacestartswith 192.168
node1:
- ens160
network.in_subnet 判断当前主机是否在某一个网段内
[root@server1 ~]# salt 'node1' network.in_subnet 192.168.69.0/24
node1:
False
[root@server1 ~]# salt 'node1' network.in_subnet 192.168.244.0/24
node1:
True
network.interface 返回指定网卡的信息
[root@server1 ~]# salt 'node1' network.interface ens160
node1:
|_
----------
address:
192.168.244.135 #IP地址
broadcast:
192.168.244.255 #网关
label:
ens160 #网卡名
netmask:
255.255.255.0 #子网掩码
network.interface_ip 返回指定网卡的IP地址
[root@server1 ~]# salt 'node1' network.interface_ip ens160
node1:
192.168.244.135
network.interfaces 返回当前系统中所有的网卡信息
[root@server1 ~]# salt 'node1' network.interfacesnode1:
----------
ens160:
----------
hwaddr:
00:0c:29:36:3e:51
inet:
|_
----------
address:
192.168.244.135
broadcast:
192.168.244.255
label:
ens160
netmask:
255.255.255.0
inet6:
|_
----------
address:
fe80::22a0:ac79:2d1a:18b7
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
network.ip_addrs 返回一个IPv4的地址列表
该函数将会忽略掉127.0.0.1
的地址
[root@server1 ~]# salt 'node1' network.ip_addrs
node1:
- 192.168.244.135
network.netstat 返回所有打开的端口和状态
[root@server1 ~]# salt 'node1' network.netstat
node1:
|_
----------
inode:
25874
local-address:
127.0.0.1:323
program:
chronyd
proto:
udp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
0
user:
0
|_
----------
inode:
25875
local-address:
[::1]:323
program:
chronyd
proto:
udp
recv-q:
0
remote-address:
[::]:*
send-q:
0
user:
0
|_
----------
inode:
28970
local-address:
0.0.0.0:22
program:
sshd
proto:
tcp
recv-q:
0
remote-address:
0.0.0.0:*
send-q:
128
state:
LISTEN
user:
0
|_
----------
inode:
32306
local-address:
192.168.244.135:33806
program:
salt-minion
proto:
tcp
recv-q:
0
remote-address:
192.168.244.131:4505
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
0
local-address:
192.168.244.135:60566
program:
proto:
tcp
recv-q:
0
remote-address:
192.168.244.131:4506
send-q:
0
state:
TIME-WAIT
user:
0
|_
----------
inode:
1121659
local-address:
192.168.244.135:22
program:
sshd
proto:
tcp
recv-q:
0
remote-address:
192.168.244.1:52918
send-q:
0
state:
ESTABLISHED
user:
0
|_
----------
inode:
28972
local-address:
[::]:22
program:
sshd
proto:
tcp
recv-q:
0
remote-address:
[::]:*
send-q:
128
state:
LISTEN
user:
0
|_
----------
inode:
29140
local-address:
*:80
program:
httpd
proto:
tcp
recv-q:
0
remote-address:
*:*
send-q:
128
state:
LISTEN
user:
0
network.ping 使用ping命令测试到某主机的连通性
[root@server1 ~]# salt 'node1' network.ping