简介:
salt-ssh 是通过ssh协议执行命令进行管理服务器,不需要在服务器端安装minion客户端,如时有安装minion也可以调用minion模块;salt-ssh有点类似ansible 无客户端基于ssh协议进行管理服务器.通过roser(/etc/salt/roser)配置文件.
roser配置文件格式说明
配置文件格式及说明参考官方文档
https://docs.saltstack.cn/topics/ssh/roster.html#ssh-roster
以下是本人参考翻译官方文档
<Salt ID>: # 定义引用目标系统的标识ID
host: # 主机IP或域名
user: # 目标主机用户名
passwd: # 目标主机密码
#以下是可选项
port: # 主机 ssh连接端口,如果是默认22 可以省略
sudo: # 是否以sudo方式 执行 (True|False)
tty: # 布尔类型: 如果设置为True 同时sudo也设置为True
# 目标主机的sudoer配置文件中 requiretty 也需要配置
priv: #文件路径用ssh私钥,默认为 salt-ssh.rsa
#的私钥也可以设置为agent-forwarding
timeout: #接数字是秒,连接超时时间
minion_opts: #minion 目录
thin_dir: #目标存储目录. 默认存到 /tmp/salt-<hash>.
cmd_umask: # umask to enforce for the salt-call command. Should be in
# octal (so for 0o077 in YAML you would do 0077, or 63)
salt-ssh作用使用场景
主要作用是不需要安装minion,只要ssh协议开放,即可远程执行命令,可用作拿到一批新机器,批量配置时使用,也可以直接通过salt-ssh不安装minion进行管理.
salt-ssh安装
RHEL/CentOS可以直接通过 yum安装,但前提需要安装epel扩展库
本次测试在CentOS6.8 X64(salt-master)下 且已经安装过salt-master
被管理的主机 CentOS7.2 X64
#yum install epel-release -y
#yum install salt-ssh -y
安装好检查:
rpm -qa |grep salt-ssh-*
salt-ssh-2015.5.10-2.el6.noarch
查看salt-ssh使用帮助
直接运行命令就会出现命令的使用帮助
也可以访问:https://docs.saltstack.com/en/latest/ref/cli/salt-ssh.html
#salt-ssh
salt-ssh使用实例之无minion客户端
修改配置文件来添加管理172.16.3.152主机:
#cat /etc/salt/roster |egrep -v '(^$|^#)'
web2:
host: 172.16.3.152
user: root
passwd: redhat
此时就可以通过salt-ssh 命令来远程管理 web2这台主机
#salt-ssh -i web2 -r "ifconfig"
如图:
说明: -r 表示 调用原生shell命令;-i 表接收链接,一般第一次登录主机 时添加
类似如下提示,此时就需要加-i
web2:
----------
retcode:
254
stderr:
stdout:
The host key needs to be accepted, to auto accept run salt-ssh with the -i flag:
The authenticity of host '172.16.3.152 (172.16.3.152)' can't be established.
RSA key fingerprint is cf:0b:4b:a0:30:75:fc:75:9d:f5:7c:79:76:45:55:b5.
Are you sure you want to continue connecting (yes/no)?
salt-ssh私钥管理远程主机(安装minion)
本实例说明:
有一台主机通过私钥无密码管理,连接端口10022,私钥为san;现在通过salt-ssh进行远程管理
配置文件:
#cat /etc/salt/roster |egrep -v '(^$|^#)'
YN_zgws:
host: 172.16.3.152
port: 10022
user: san
priv: /home/san/san
调用原生shell命令执行
#salt-ssh web2 -r "sudo ifconfig"
执行结果如图:
调用minion cmd.run模块执行命令:
可以看出salt-ssh在没有minion情况下可以调原生shell管理主机,有minion时可以调用minion的模块来管理主机;
salt-ssh使用ssh协议来管理无minion时很适合做初始化工作,包括安装minion端.
补充:
私钥无密码管理主机配置
在salt-ssh所在主机上执行
#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
4b:b3:fa:cf:58:1a:3a:e2:83:cd:85:f9:da:68:2d:f6 root@web02_135
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| |
| o S |
| o .. + |
| + + + . |
| . Oo+o * |
| ++*Eo+.o |
+-----------------+
生成私钥 /root/.ssh/id_rsa
公钥:/root/.ssh/id_rsa.pub
切换到/root/.ssh下
同步公钥到172.16.3.152
#ssh-copy-id -i id_rsa.pub root@172.16.3.152
root@172.16.3.152's password:
Now try logging into the machine, with "ssh 'root@172.16.3.152'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
测试无密钥登录
#hostname
web02_135
#ssh root@172.16.3.152
Last login: Fri Dec 1 15:20:18 2017 from 172.16.3.147
#hostname
web2_172_16_3_152
可以看到已经 通过私钥无密码登录成功.