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'

 

posted @ 2018-07-10 11:39  一条咸鱼的梦想  阅读(449)  评论(0编辑  收藏  举报