码迷,mamicode.com
首页 > 其他好文 > 详细

使用脚本进行ansible批量主机的免密配置

时间:2019-08-26 16:42:35      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:erro   use   install   ict   hpa   场景   脚本   ip地址   build   

应用场景:

  在应用ansible的实际情况中,有一个很现实的问题,ansible是需要对主机做ssh免密登陆的,而挨个对主机做免密是非常的繁琐的,挨个敲IP不仅非常的繁琐而且容易出错,为解决这个问题,为以后使用ansible时的便捷,写了一个小脚本,实现批量对主机的免密配置:

#!/bin/bash
#在根目录下创建address文件,一行一个ip地址,将所有需要免密的主机ip填入
User=root  #ssh免密的账户
passWord=123  #ssh免密主机的密码
address=`cat /address`
rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null  #检测sshpass软件包是否安装
if [ $? -gt 0 ];then
    YumBuild
    yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)
fi
[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.ssh
echo "正在创建密钥对...."
rm -rf ~/.ssh/id_rsa ~/.ssh/id_rsa.pub   #创建密钥文件
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" &>/dev/null
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
for ip in $address  #调用/address的相关的ip信息进行ping测试,不通则跳过,通则对主机进行免密配置
do
    ping $ip -c1 &>/dev/null
    if [ $? -gt 0 ];then
        echo "$ip无法ping通请检查网络" 
        continue
    fi
    sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${User}@$ip &>/dev/null
    echo "$ip 密钥分发成功"
done

小结:

  需要注意的是,对第一次免密配置失败的主机,不可再用此脚本进行第二次配置,否则第一次配置成功的机器会失效,可以将脚本中创建密钥的部分注释,然后进行配置,最后,需要注意的是,脚本调用的IP地址的信息来自于/address文件中的信息,脚本中并没有写出判断,想来能应用ansible的必不会是新手,这种低级错误应该不会发生。

使用脚本进行ansible批量主机的免密配置

标签:erro   use   install   ict   hpa   场景   脚本   ip地址   build   

原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11413355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!