在互联网公司做运维,通常需要一个人维护几百上千台服务器。当项目需要紧急上线时,面对几十台服务器需初始化时,新入行运维就会慌乱阵脚,通宵达旦一台台服务器安装部署。这样不仅影响项目上线效率,也影响个人身体。这种情况下,推荐大家使用ansible自动化部署的方式,初始化服务器,上百台服务器硬盘初始化或配置修改,几分钟就能完成。
下面是我日常运维过程中用到的部分ansible运维脚本,发出来给大家参考,如果不严谨的地方欢迎指出。大家如有好用的ansible脚本也欢迎分享到评论区,共同学习。
目录
示例:
服务器配置统计表最终显示效果:
一、Ansible收集服务器信息列表
1、收集服务器信息脚本
#vi check_hosts.yml
---
- hosts: all
remote_user: root
#gather_facts:(no/true)是否收集服务器信息,收集服务器信息运行较慢
gather_facts: true
tasks:
- name: 查询服务器信息
shell: |-
echo "cpu型号: `cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq`;"
echo "cpu核数: `cat /proc/cpuinfo | grep 'processor' | sort | uniq | wc -l`;"
echo "总内存:`free -h | grep Mem | awk '{print $2}'`;"
echo "已用内存:`free -h | grep Mem | awk '{print $3}'`;"
echo "剩余内存:`free -h | grep Mem | awk '{print $4}'`;"
echo "服务器硬盘:`lsblk|grep -E disk|awk '{ print $1,$4}'`"
register: hostscheck
- name: 查询docker/docker-compose版本
shell: docker -v && docker-compose -v
register: dockercheck
- name: display hosts lists
debug:
msg: IP地址:'{{ ansible_default_ipv4.address }}'; 主机名:'{{ ansible_hostname }}'; 系统版本:'{{ ansible_distribution }}{{ ansible_distribution_version }}'; '{{hostscheck.stdout}}'; Docker版本:'{{ dockercheck.stdout }}'; SElinx='{{ ansible_selinux.status }}'
2、服务器信息数据处理
(1)运行ansible-playbook生成服务器信息数据
ansible-playbook -i hosts check_hosts.yml |grep msg > check_hosts.txt
(2)将生成数据文件内容复制到excel中,选中数据列,点击数据——分列——分割符号——勾选“分号”,下一步完成即可。
(3)使用Ctrl+F批量替换删除多余字符,即可获得如下服务器信息表。此表为初始数据表,各位可根据个人需求自由定制。