salt-ssh
1、salt-ssh相关
- salt-ssh可以独立运行的,不需要minion端(功能类似ansible,只是出的比较晚,没有ansible使用的那么火)
- minion升级、重启,通过salt-ssh可以实现
- salt-ssh可以代替expect之类的密码推送脚本,功能不比expect差
- salt-ssh用的是sshpass进行密码交互的
安装
yum install -y salt-ssh
3、配置使用
可以把要执行的信息,比如ip,帐号,密码,端口等都放到一个文件里面。当然文件路径是可以随便定义的,官方是指定到了/etc/salt/roster。
在roster文件中支持以下这些选项
- host MINION主机的IP地址如果有解析的话主机名也可以
- port 通常是ssh协议默认的22端口,按照需要可以更改
- user 登陆目的主机时的用户
- passwd 对应用户的密码
- sudo 这个选项之后可填’True’或者’False’,为了非特权用户可以执行特权命令,为了sudo时不需要密码,可以通过visudo来修改/etc/sudoers文件来完成
- priv 指定私钥路径
- timeout 指定等待连接完成的最大时间,默认60秒
- thin_dir slat-thin agent的安装目录
roster内容:
[root@linux-node1 ~]# cat /etc/salt/roster
web1:
host: 192.168.1.118
//
前面留四个空格,冒号后空一格
user: root
//
前面留四个空格,冒号后空一格
password: PASSWORD
//
前面留四个空格,冒号后空一格
port: 22
//
前面留四个空格,冒号后空一格
web2:
host: 192.168.1.105
user: root
password: PASSWORD
port: 22
然后执行批量操作命令:
第一次执行的时候,有的机器可能会提醒输入ssh初次登录询问yes/no,如果要去掉这个yes/no的询问环节,只需要修改本机的/etc/ssh/ssh_config文件中的"# StrictHostKeyChecking ask" 为 "StrictHostKeyChecking no",然后重启sshd服务即可
[root@linux-node1 ~]# salt-ssh "*" -r 'free -m'
特别注意:
salt-ssh第一次执行是根据roster文件里配置的账号密码推送密码,来实现自动交互的。
执行完了后会在目标服务器里面,追加master端(即源机器)的key。
然后就可以删除roster里面的passwd密码条目了,删除roster文件里的密码条目后,不影响后批量操作的执行。
把roster文件里的password条目删除后,还是可以运行,这里就不是用sshpass推送密码了,而是直接通过key了
[root@linux-node1 ~]# cat /etc/salt/roster
web1:
host: 192.168.1.118
user: root
port: 22
web2:
host: 192.168.1.105
user: root
port: 22
--roster-file参数后面跟的是配置文件,如果是官方指定的配置文件/etc/salt/roster,则可以省略,如果是自己自定义的文件,则需要用这个参数指定
[root@linux-node1 ~]# salt-ssh "*" --roster-file /etc/salt/roster -r 'uptime'