使用腳本進行ansible批量主機的免密配置

應用場景:

  在應用ansible的實際狀況中,有一個很現實的問題,ansible是須要對主機作ssh免密登錄的,而挨個對主機作免密是很是的繁瑣的,挨個敲IP不只很是的繁瑣並且容易出錯,爲解決這個問題,爲之後使用ansible時的便捷,寫了一個小腳本,實現批量對主機的免密配置:bash

#!/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的必不會是新手,這種低級錯誤應該不會發生。網絡

相關文章
相關標籤/搜索