01. 批量管理服务知识介绍
- ansible是一个基于Python开发的自动化运维工具
- ansible是一个基于ssh协议实现远程管理的工具
- ansible软件可以实现多种批量管理操作(批量系统配置、批量软件部署、批量文件拷贝、批量运行命令)
- saltstack puppet
02. 批量管理服务特征介绍
- a ansible软件服务端(管理端):不需要启动任何服务
默认服务端不需要任何的配置
- b ansible软件客户端(受控端):没有客户端软件安装
03. ansible软件安装部署
1)ansible软件自动化环境架构规划
管理主机1台:
192.168.179.61 m01
受控主机3台:
192.168.179.41 backup
192.168.179.31 nfs01
192.168.179.7 web01
Linux系统 6.9
2) ansible软件自动化部署条件
建议基于ssh密钥方式建立远程连接
a ssh密钥对创建(管理主机)
ssh-keygen -t dsa
影响免交互创建密钥对创建因素:
1)需要指定私钥存放路径
-f /root/.ssh/id_dsa
2)需要进行私钥文件密码设定
-N/-P
-N “”/-P “”
免交互创建密钥对方法
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N “”
b 分发公钥文件(管理主机进行分发)
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
影响免交互批量分发密钥因素
1)需要有确认连接过程,需要输入yes/no
-o StrictHostKeyChecking=no
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub “-o StrictHostKeyChecking=no 172.16.1.31”
2)需要解决密码问题
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
Now try logging into the machine, with “ssh ‘172.16.1.31’”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
免交互批量分发公钥脚本:
#!/bin/bash
######################
#删除KEY文件 #
######################
rm -f /root/.ssh/id_dsa*
######################
#创建密钥对 #
######################
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N “”
######################
#分发密钥对 #
######################
for ip in 31 41 7
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub “-o StrictHostKeyChecking=no 172.16.1.$ip”
done
c 检查是否可以进行基于密钥远程管理
ssh 172.16.1.31 uptime
免交互批量检查测试脚本
#!/bin/bash
######################
#请输入参数 #
######################
if [ $# -ne 1 ];then
echo “pls input one agrs”
exit 1
fi
######################
#测试 #
######################
for ip in 31 41 7
do
echo ===== info 172.16.1.$ip=====
ssh 172.16.1.$ip $1 ##$1 表示第一个参数
echo “”
done
测试:(这里$1就是hostname)
[root@m01 ~]# sh fenfa_check.sh hostname
===== info 172.16.1.31=====
nfs01
===== info 172.16.1.41=====
backup
===== info 172.16.1.7=====
web01
还可以用以下命令:
sh fenfa_check.sh “hostname” #批量查看每个主机的主机名
sh fenfa_check.sh “free -m” #批量查看每个主机的内存信息
sh fenfa_check.sh “uptime” #批量查看每个主机的负载信息
sh fenfa_check.sh “yum install libselinux-python -y” #批量安装ansible被管理端软件
补充说明
ssh $1 “exec sh -c ‘cd; umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon .ssh .ssh/authorized_keys >/dev/null 2>&1 || true)'”
1)临时设置一个umash值,设置的值为077
2)利用脚本创建.ssh,目录 test -d .ssh || mkdir .ssh
3)将本地公钥文件中的信息重定向到远程主机的 .ssh/authorized_keys文件中,并授权此文件为600
4)如果客户端改了SSH端口号,可以修改ssh-copy-id
ssh -p”端口号” $1 “exec sh -c ‘cd; umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys && (test -x /sbin/restorecon && /sbin/restorecon .ssh .ssh/authorized_keys >/dev/null 2>&1 || true)'”