使用场景: 公司内部服务器用的是云厂商的, 一般在交付使用前会给一个配置清单 但是真正的配置还需要运维部门的人员去检查一下 每批交付使用的主机少则十几台 多则几十台 将配置的结果做成表格导进execl
我相信没有人会一台一台统计 ansible在这个时候就派上了用场
优点是像自助餐一样 需要获取什么值 直接用shell模块就好了 有时候并不需要去写很多playbook
前提 :
服务器上已经安装ansible 并且主机之间已经取得互信
互信脚本
本质是将自己本机的公钥使用非交互模式推送到远端主机
在这里对 ssh-copy-id这个命令做个解释
ssh-copy-id [ -i 选项是指定本地公钥的文件位置 -o StrictHostKeyChecking=no 是不进行公钥确认]
在ssh_config文件中 公钥确认这一步是默认开启的 使用-o选项相当于把配置文件中的优先级临时提高了
for i in {1..100}
do
sshpass -p ' 123456' ssh-copy-id -o StrictHostKeyChecking=no root@172.16.255.$i
done
或者
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub -o StrictHostKeyChecking=no 172.16.1.$i &>/dev/null
执行完毕之后自己登陆验证一下
在自己登陆的机器上使用ansible
all 选项: 指定所有主机 也可以使用-i 选项指定主机组
-m 选项 : module模块的意思 在ansible中诸多模块可以使用 在这我们使用shell模块 ad-hoc的模式 短小精悍
-a 指定动作
ansible all -m shell -a "disk=$(expr `df |awk '{print $2}'|sort -nr|head -1` / 1048576) && cpu=$(cat /proc/cpuinfo| grep 'cpu cores'| wc -l),&& men=$(free -h|grep 'Mem'|awk '{print $2}') && echo -e '$disk \t , $cpu \t , $men'" > test.csv
在这个脚本里查看了磁盘容量 按G显示 查看了cpu的逻辑核心数 内存的总量 当有其他需求可以加在命令中以xxx=$()的形式 最后根据顺序echo出来这些变量的名字
可以将这些巡检的结追加到文本文档里 每个结果中间加上 , 符号 生成csv文件 拖到本地直接使用