本文共 3648 字,大约阅读时间需要 12 分钟。
salt-ssh 是通过ssh协议执行命令进行管理服务器,不需要在服务器端安装minion客户端,如时有安装minion也可以调用minion模块;salt-ssh有点类似ansible 无客户端基于ssh协议进行管理服务器.通过roser(/etc/salt/roser)配置文件.
配置文件格式及说明参考官方文档
以下是本人参考翻译官方文档: # 定义引用目标系统的标识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- . 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)
主要作用是不需要安装minion,只要ssh协议开放,即可远程执行命令,可用作拿到一批新机器,批量配置时使用,也可以直接通过salt-ssh不安装minion进行管理.
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使用帮助
直接运行命令就会出现命令的使用帮助 也可以访问: #salt-ssh修改配置文件来添加管理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 表接收链接,一般第一次登录主机 时添加
类似如下提示,此时就需要加-iweb2: ---------- 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)?
本实例说明:
有一台主机通过私钥无密码管理,连接端口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 rsaGenerating 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_135The 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.152root@172.16.3.152's password: Now try logging into the machine, with "ssh 'root@172.16.3.152'", and check in: .ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.
测试无密钥登录
#hostnameweb02_135#ssh root@172.16.3.152Last login: Fri Dec 1 15:20:18 2017 from 172.16.3.147#hostnameweb2_172_16_3_152
可以看到已经 通过私钥无密码登录成功.