ansible批量机器免密管理脚本
我主要利用ansible主要用于批量分发软件、安装、配置等工作,ansible利用每台服务器都已安装的ssh软件,即可实现免客户端管理所有的节点,在管理前需要先装自己的公钥发送给对方,如何操作呢?
答:在ansible管理节点,通过ssh-keygen生成密钥对,再通过ssh-copy-id点对点发送给被管理主机。
如果有100台机器呢?如何快速分发密钥呢?
可以通过以下脚本实现密钥快速发送。
[root@ans-188 ~]# vim /scripts/fenfa02.sh
#!/bin/bash
######################################### #####################
# File Name:fenfa02.sh
# Version:V1.0
# Author:shawyc996
# Organization:shawyc.cn
# Desc:
######################################### #####################
#!/bin/bash
#author: shawyc
#desc:
# 1.一键创建秘钥对(如果不存在)
# 2.一键分发公钥
# 3.一键检查
#1.vars
key=/root/.ssh/id_rsa
ip_group1="1 2 84 39 40 41 42 43 35 "
pass_g1=4rfv%TGB
ip_group2="162 163 193 194"
pass_g2=ZykUig9s4ZmCC
#2. 一键创建秘钥对
if [ ! -f $key ];then
ssh-keygen -f $key -P '' &>/dev/null
if [ $? -eq 0 ];then
echo "秘钥对创建成功"
else
echo "秘钥对创建失败"
exit 1
fi
fi
#3. 一键分发公钥
echo "Group1分发公钥-开始"
for ip_g1 in $ip_group1
do
sshpass -p$pass_g1 ssh-copy-id -p 50788 -f -o StrictHostKeyChecking=no 10.10.106.$ip_g1
if [ $? -eq 0 ];then
echo "秘钥分发成功"
else
echo "秘钥分发失败"
exit 1
fi
done
echo "group1分发公钥-完成"
####
echo "Group2分发公钥-开始"
for ip_g2 in $ip_group2
do
sshpass -p$pass_g2 ssh-copy-id -p 50788 -f -o StrictHostKeyChecking=no 10.10.106.$ip_g2
if [ $? -eq 0 ];then
echo "秘钥分发成功"
else
echo "秘钥分发失败"
exit 1
fi
done
echo "group2分发公钥-完成"
#
#4.一键检查
echo "ip_g1检查-开始"
for ip_g1 in $ip_group1
do
ssh -p 50788 -o StrictHostKeyChecking=no 10.10.106.$ip_g1 hostname -I
if [ $? -eq 0 ];then
echo "执行成功"
else
echo "执行失败"
exit 1
fi
done
echo "ip_g1检查-结束"
##################3
echo "ip_g2检查-开始"
for ip_g2 in $ip_group2
do
ssh -p 50788 -o StrictHostKeyChecking=no 10.10.106.$ip_g2 hostname -I
if [ $? -eq 0 ];then
echo "执行成功"
else
echo "执行失败"
exit 1
fi
done
echo "ip_g2检查-结束"
版权声明:原创作品,谢绝转载!否则将追究法律责任。