目录
一、saltstack简介
1、介绍
2、Salt的核心功能
3、saltstack通信机制
二、saltstack部署
1、部署环境
2、配置yum源
3、安装master与minion
4、连接认证master和minion
三、salt运行
1、执行格式
2、实操演示
一、saltstack简介
1、介绍
saltstack是一个配置管理系统(客户端和服务端),能够维护预定义状态的远程节点。
saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
saltstack是运维人员提高工作效率、规范业务配置与操作的利器。
2、Salt的核心功能
①使命令发送到远程系统是并行的而不是串行的
②使用安全加密的协议
③使用最小最快的网络载荷
④提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
3、saltstack通信机制
SaltStack 采用 C/S模式,minion与master之间通过ZeroMQ消息队列通信,默认监听4505端口。
Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口。
二、saltstack部署
1、部署环境
主机名 | IP地址 | 服务 |
PC1 | 192.168.30.11 | salt-master |
PC2 | 192.168.3.12 | salt-minion |
2、配置yum源
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
3、安装master与minion
PC1执行:
yum install -y salt-master
#安装master端
systemctl enable --now salt-master
#开机自启并启动master服务
PC2执行:
yum install -y salt-minion
#安装minion端
systemctl enable --now salt-minion.service
#开机自启并启动minion服务
4、连接认证master和minion
认证原理:
①minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成一对密钥,然后将公钥发给master
②master收到minion的公钥后,通过salt-key命令接受该公钥。此时master的/etc/salt/pki/master/minions目录将会存放以minion id命名的公钥,然后master就能对minion发送控制指令了
PC1执行:
lsof -i:4506
#查看4506端口端口状态如下,有监听但是无建立连接的。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 101552 root 43u IPv4 162865 0t0 TCP *:4506 (LISTEN)
lsof -i:4505
#查看4505端口端口状态如下,有监听但是无建立连接的。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 101546 root 35u IPv4 154229 0t0 TCP *:4505 (LISTEN)
PC2执行:
rpm -qc salt-minion
#查找minion配置文件位置
vim /etc/salt/minion
#打开配置文件修改第16行内容,去掉注释加上自己的master地址然后保存退出
.
.
master: 192.168.30.11
.
.
systemctl restart salt-minion.service
#重启minion服务使得配置生效
PC1执行:
lsof -i:4506
#查看4506端口状态如下,一个服务监听端口,一个master与pc2建立连接的端口。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 101552 root 43u IPv4 162865 0t0 TCP *:4506 (LISTEN)
salt-mast 101552 root 51u IPv4 219147 0t0 TCP pc1:4506->192.168.30.12:57896 (ESTABLISHED)
lsof -i:4505
#查看4505端口端口状态如下,minion还在等待master端执行命令允许minion连接。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 101546 root 35u IPv4 154229 0t0 TCP *:4505 (LISTEN)
PC1执行:
使用salt-key命令加参数,配置master允许minion连接-L 列出所有公钥信息-a minion地址 接受指定minion等待认证的key-A 接受所有minion等待认证的key-r minion地址 拒绝指定minion等待认证的key-R 拒绝所有minion等待认证的key-f minion地址 显示指定key的指纹信息-F 显示所有key的指纹信息-d minion地址 删除指定minion的key-D 删除所有minion的key-y 自动回答yes
#查看有哪些主机等待连接
salt-key -A
#允许所有主机连接,具体看下图1操作
lsof -i :4505
#查看客户端是否与master建立连接了,下图2
三、salt运行
1、执行格式
salt [options] '<target>' <function> [arguments]
#执行格式
target:指定哪些minion,默认的规则是使用glob匹配minion id # salt '*' test.ping
targets也可以使用正则表达式 # salt -E 'server[1-3]' test.ping
targets也可以指定列表 # salt -L 'server2,server3' test.ping
funcation:module提供的功能,Salt内置了大量有效的functions
arguments:通过空格来界定参数
# 常用target参数-E 正则匹配-L 列表匹配 -S CIDR匹配网段-G grains匹配--grain-pcre grains加正则匹配-N 组匹配-R 范围匹配-C 综合匹配(指定多个匹配)-I pillar值匹配
# 常用的options--version 查看saltstack的版本号--versions-report 查看saltstack以及依赖包的版本号-h 查看帮助信息-c CONFIG_DIR 指定配置文件目录(默认为/etc/salt/)-t TIMEOUT 指定超时时间(默认是5s)--async 异步执行-v verbose模式,详细显示执行过程--username=USERNAME 指定外部认证用户名--password=PASSWORD 指定外部认证密码--log-file=LOG_FILE 指定日志记录文件
2、实操演示
1、连通性测试
salt '*' test.ping
#测试所有minion与master的连通性
salt 'pc2' test.ping
##测试pc2主机minion与master的连通性
2、安装软件
salt 'node1' pkg.install httpd
3、卸载软件
salt 'node1' pkg.remove httpd
4、测试各种模块
salt '*' test.echo 'hello'
salt '*' network.ping baidu.com
# 使用ping命令测试到某主机的连通性
salt '*' network.connect baidu.com 80
# #测试minion至某一台服务器的网络是否连通
salt '*' network.get_hostname
# 获取主机名
salt '*' network.active_tcp
# 返回所有活动的tcp连接
salt '*' network.ip_addrs
# 返回一个IPv4的地址列表
alt '*' network.get_fqdn
# 查看主机的fqdn(完全限定域名)