sshpass做秘钥分发,ansible做自动化运维工具

最近公司机器的增多,顺便还要上报表系统,考虑到服务器越来越多,手工的管理显得越来的越吃力,所以打算推进公司自动化运维工具的使用。

推进的过程中,一步一个坑踩过来的。由于公司之前未运用过自动化运维工具,所以经验很少。

首先安装ansible:

  第一步:设置epel仓库:

rpm -iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

  第二步,使用yum安装ansible,顺便检查下ansible版本:

yum -y install ansible
ansible -- version

  第三步,准备秘钥的分发:

ssh-keygen    #获取所登录用户的秘钥
ssh-copy-id -i .ssh/id_rsa.pub root@10.251.26.81 #分发哪个用户的秘钥就用哪个用户

但是由于我们主机数量的居多,一台台的去分发秘钥太过繁琐和劳累,所以在百度了一些东西之后我决定利用sshpass来做秘钥分发:

sshpass做秘钥分发:

 #/bin/bash
password=1qaz@WSX
IP_ADDR='10.251.26.81' #. /etc/init.d/functions
#if ! [ -f ~/.ssh/id_dsa.pub ];then
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null >&
# echo -e "\033[32m======Local=========\033[0m"
# action "Generate the key!" /bin/true
#fi for i in $IP_ADDR;do
# sshpass -p $passwd ssh-copy-id -i /home/shadm1/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no ${i}" >/dev/null >&
sshpass -p "1qaz@WSX" ssh-copy-id -i .ssh/id_rsa.pub "-o StrictHostKeyChecking=no shadm1@${i}" >/dev/null @>&1 #版本不同的情况下,有时候这块"-o StrictHostKeyChecking=no shadm1@${i}"  不用加双引号
if [ $? == ];then
echo -e "\033[32m=========`ssh $i hostname`==========\033[0m"
action "send successful" /bin/true
else
echo -e "\033[31m======$i=======\033[0m"
action "send failed" /bin/false
fi
done

利用一个简单的脚本来做秘钥分发

完成后,测试执行ansible:

ansible test -m command -a 'hostname' -u shadm1 -U useradmin --ask-sudo-pass

可以正常执行,成功!

QQ:531197592,有问题请指正

上一篇:OpenCV头文件包含问题


下一篇:Django框架(八)—— 模板层:模板导入、模板继承、静态文件