自动化运维:Ansible部署工具(一)批量分发与收集


前言

一、Ansible简介

Ansible是一款简单的自动化部署工具,和它的同类产品Puppet、Saltstack相比,无需安装agent客户端
特点:
轻量化,部署简单
配置简单,扩展性强
批量任务可制作剧本(Playbooks)
基于python编写,维护简单,语法简单

上架构图:
在这里插入图片描述

二、安装与添加节点

1.安装

#添加EPEL源
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装Ansible
yum install -y ansible
#添加节点信息
vim /etc/ansible/hosts
#节点信息如下
cat /etc/ansible/hosts
[allnode] #节点群组名称
172.16.0.31
172.16.0.32
172.16.0.33
172.16.0.34
172.16.0.35
172.16.0.36

2.制作秘钥对

#生成秘钥对
[root@ansible ~]ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 回车
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
#查看公钥与私钥
[root@ansible ~]cd .ssh/
[root@ansible ~/.ssh]ls
id_rsa  id_rsa.pub  known_hosts


3.批量分发公钥脚本

#节点密码一致的脚本内容如下
#!/bin/bash
key="/root/.ssh/id_rsa.pub"
pass="123"
nodeip="/root/ipfile"

while read ip
do
    sshpass -p $pass ssh-copy-id -i $key $ip -o StrictHostKeyChecking=no &> /dev/null && echo "${ip} sshkey is success."
done < $nodeip
#ipfile文件

172.16.0.31
172.16.0.32
172.16.0.33
172.16.0.34
172.16.0.35
172.16.0.36
#将脚本与ipfile放置在同目录下执行分发
[root@ansible ~] sh scp_sshkey.sh 
172.16.0.31 sshkey is success.
172.16.0.32 sshkey is success.
172.16.0.33 sshkey is success.
172.16.0.34 sshkey is success.
172.16.0.35 sshkey is success.
172.16.0.36 sshkey is success.

#各节点密码不同的脚本内容如下
#!/bin/bash
key="/root/.ssh/id_rsa.pub"
nodeip="/root/ipfile"

while read line
do
          ip=$(echo $line | awk '{print $1}')
        pass=$(echo $line | awk '{print $2}')
        sshpass -p $pass ssh-copy-id -i $key $ip -o StrictHostKeyChecking=no &> /dev/null && echo "${ip} sshkey is success."
done < $nodeip
#ipfile内容如下
172.16.0.31     password123
172.16.0.32     password567
172.16.0.32     password785
172.16.0.33     password125
172.16.0.34     password768
172.16.0.35     passwordasg
172.16.0.36     passwordhfd
#将脚本与ipfile放置在同目录下执行分发
[root@ansible ~] sh scp_sshkey.sh 
172.16.0.31 sshkey is success.
172.16.0.32 sshkey is success.
172.16.0.33 sshkey is success.
172.16.0.34 sshkey is success.
172.16.0.35 sshkey is success.
172.16.0.36 sshkey is success.

三、收集节点信息

1.制作信息收集脚本

#!/bin/bash
#系统检测脚本
#统计CPU的线程数
CPUCOUNT=`grep -c "proc" /proc/cpuinfo`
#CPU当前的利用率
CPUIDLE=`top -n 1 |  awk -F"," '/^%C/{print $4}' | awk -F"." '{print "CPU-idle:" $1"%"}'`
#CPU的平均负载值/1分钟/5分钟/15分钟
CPUAVG=`top -n 1 | awk -F"[,:]" '/load*/{print "CPU负载(1min):"$7,"%\nCPU负载(5min):"$8,"%\nCPU负载(15min):"$9"%"}'`
#内存使用情况
MEM=`free -m | awk '/^Mem/{print "总内存:"$2,"M\n已用内存:" $3,"M\n空闲内存:" $4" M"}'`
#网卡流量信息ens32要替换为对应的网卡编号
NICSPEED=`ethtool ens32 | awk '/Speed/{print $NF}'`
NIC=`ifconfig ens32 | awk -F'[()]' '/RX.*KiB/||/RX.*MiB/{print $(NF-1)}'`
#节点的当前时间
LOCALTIME=`date "+%Y-%m-%d %H:%M:%S"`

echo "本机CPU线程数:"$CPUCOUNT
echo ${CPUIDLE}
echo ${CPUAVG}
echo ${MEM}
echo "当前网络流量:"${NIC}
echo "网卡速率:"${NICSPEED}
echo "本机时间:"${LOCALTIME}

2.脚本分发

#allnode是在主机清单hosts中定义的节点群组名称
#-m copy代表调用文件传输模块
#src是文件所在的源目录 dest是目标节点的存放目录
#mode代表传输到目标节点后文件的权限640<=>rw-r-----
[root@ansible ~]ansible allnode -m copy -a "src=/root/show-os.sh dest=/root/ mode=640"

3.利用Ansible批量收集

#在Ansible上执行远程节点脚本
#-m shell代表调用shell模块
[root@ansible ~]ansible allnode -m shell -a "sh /root/show-os.sh"
#输出结果如下
172.16.0.33 | CHANGED | rc=0 >>
节点CPU线程数:1
CPU-idle:100%
CPU负载(1min): 0.00 % CPU负载(5min): 0.01 % CPU负载(15min): 0.05%
总内存:991 M 已用内存:101 M 空闲内存:787 M
节点网络流量:1.2 MiB
网卡速率:100Mb/s
节点时间:2020-11-15 15:54:27



总结

没有总结…挺好用的工具
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤学苦练羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值