文章目录
一、salt-ssh引入
我们在安装部署 SaltStack 的时候,需要安装 salt 客户端,还要与 salt 服务端进行认证才能互相通信。
如果我们使用 salt-ssh 的方式就不需要安装 salt 客户端,也不需要做认证,是 master 基于 ssh 去连接 minion 的。
二、Roster使用
salt-ssh需要一个名单系统来确定哪些执行目标,Salt的0.17.0版本中salt-ssh引入roster系统。
roster系统编译成了一个数据结构,包含了targets,这些targets是一个目标系统主机列表和连接到这些targets方法路径。
# target的信息
host: # 远端主机的ip地址或者dns域名
user: # 登录的用户
passwd: # 用户密码,如果不使用此选项,则默认使用秘钥方式
# 可选的部分
port: #ssh端口
sudo: #可以通过sudo
tty: # 如果设置了sudo,设置这个参数为true
priv: # ssh秘钥的文件路径
timeout: # 当建立链接时等待响应时间的秒数
minion_opts: # minion的位置路径
thin_dir: # target系统的存储目录,默认是/tmp/salt-<hash>
cmd_umask: # 使用salt-call命令的umask值
三、实验
实验环境:
主机名 | ip | 服务 |
---|---|---|
server1 | 172.25.1.1 | salt-master、salt-ssh |
server4 | 172.25.1.4 | 客户端 |
此实验在salt-master端进行
【1】
1、关闭客户端salt-minion,查看salt-master端未连接salt-minion
salt-key -L
2、在网上下载好salt-ssh安装包并安装
yum install salt-ssh -y
3、修改roster文件,配置要管理的机器
vim /etc/salt/roster
server4:
host: 172.25.1.4
user: root
passwd: westos
4、测试
salt-ssh '*' test.ping -i
【2】
1、开启客户端salt-minion,服务端认证连接
2、测试
salt-ssh '*' test.ping -i
四、总结
1.salt-ssh 是在salt基础上打了一个python包上传到客户端的默认tmp目录下
在客户端上面解压并执行返回结果,最后删除tmp上传的临时文件
2.salt-minion方法是salt-mater先执行语法验证,验证通过后发送到minion
minion收到Msater的状态文件默认保存在/var/cache/salt/minion
注意:也有时候salt-master语法验证通过,在minion上可能因为环境问题会执行失败
3.salt-ssh和salt-minion可以共存,salt-minion不依赖于ssh服务