ansible-playbookansible对服务器进行批量优化
Posted 码海小虾米_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible-playbookansible对服务器进行批量优化相关的知识,希望对你有一定的参考价值。
ansible对服务器进行批量优化
一、准备工作
1、服务器准备
IP地址 | 服务器作用 | 系统 | 其他 |
---|---|---|---|
192.168.80.88 | ansible服务器 | centos 7.9 | 部署好ansible,配置完免交互 |
192.168.80.10 | 测试服务器1 | centos 7.9 | 硬盘50G |
192.168.80.20 | 测试服务器2 | centos 7.9 | 硬盘50G |
二、配置解释
1、配置文件如下
[root@ansible ansible]# tree /etc/ansible/
/etc/ansible/
├── auto_install.yml ## playbook脚本文件
├── group_vars
│ └── global.yml ## 全局环境变量配置文件
├── hosts ## 主机清单列表
└── roles ## 角色
└── optimization ## 自定义的角色名称
├── files
│ ├── Backup.sh ## 备份脚本
│ ├── clean_cache.sh ## 缓存清理脚本
│ ├── disk.sh ## 磁盘格式化脚本
│ ├── lvm2.tar ## lvm的rpm包
│ └── server_optimize.sh ## 优化脚本
└── tasks
└── main.yml ## 任务集合
2、配置文件解释
(1)playbook脚本文件如下
此配置文件修改如下两项:
1、hosts:执行的主机组,需在/etc/ansible/hosts 中定义
2、roles:执行的角色,需在/etc/ansible/roles 下定义
---
- hosts: test ## 执行的主机
remote_user: root ## 执行的用户
vars_files:
- group_vars/global.yml ## 全局变量文件
roles:
- optimization ## 系统优化(对应自定义角色的名称)
(2)主机清单列表如下
[test]
192.168.80.10
192.168.80.20
(3)全局环境变量配置文件如下
## 服务器空闲磁盘名称,可使用ansible命令批量获取,见下图
disk_name: sdb
## 要设置的卷组名和lvm逻辑卷名
vg_name: myvg
lvm_name: mylvm
(4)备份脚本如下
#!/bin/bash
## 备份专用脚本,使用方法: Backup.sh 当前文件或者目录名
mkdir -p /data/packages/backup/ &> /dev/null
## 定义更新目录和当下时间
path=/data/packages/backup
date=$(date +%Y-%m-%d-%H-%M)
## 判断是否有/
if [[ $1 = */ ]]
then
name=`echo $1 | awk -F/ 'print $1'`
tar cf $date.tar $1
mv $date.tar $path/$name-$date.tar
else
tar cf $date.tar $1
mv $date.tar $path/$1-$date.tar
fi
## 输出备份结果
echo "本次备份情况如下:"
ls -lh /data/packages/backup/*$date*
(5)缓存清理脚本如下
#!/bin/bash
## 清除缓存脚本
echo "开始清理缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 10 #延迟10秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理结束"
(6)磁盘格式化脚本如下
#!/bin/bash
## 下列的“/dev/sdb”替换为查找的空闲磁盘名称
fdisk /dev/sda <<EOF
n
p
t
8e
w
EOF
(7)优化脚本如下
根据项目需求自己添加优化项,这边只配置了简单的
#!/bin/bash
# 系统优化
#永久关闭selinux,需要重启
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
#关闭防火墙并设为开机不自启,然后显示状态
systemctl stop firewalld.service
systemctl disable firewalld.service
#时间校准并加入计划任务中
yum install -y ntpdate
#echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
(8)任务集合配置文件如下
## yum安装lvm2失败则使用rpm包安装
- block:
- yum:
name: lvm2
rescue:
- debug:
msg: "yum安装lvm2失败,将使用本地rpm包安装"
- unarchive:
src: lvm2.tar
dest: /opt/
- command: rpm -ivh /opt/lvm2/* --nodeps --force
## 1分区-2创建pv-3创建vg-4创建lvm-5格式化
- name: copy file
copy:
src: disk.sh
dest: /root/
- name:
lineinfile:
path: /root/disk.sh
regexp: '^fdisk'
line: fdisk /dev/disk_name <<EOF
- name: run script
shell: bash /root/disk.sh
- name: pvcreate pv
command: pvcreate /dev/disk_name1
- name: pvcreate vg
command: vgcreate vg_name /dev/disk_name1
- name: pvcreate lvm
command: lvcreate -l 100%VG -n lvm_name /dev/vg_name
- name: format disk
command: mkfs.xfs /dev/vg_name/lvm_name
## 永久挂载到/data目录
- name: auto mount
lineinfile:
path: /etc/fstab
line: /dev/vg_name/lvm_name /data xfs defaults 0 0
- name: create data
command: mkdir -p /data/
- name: flush config
command: mount -a
## 创建常用目录
- name: Create directory
file:
path: /data/ item
state: directory
loop:
- packages
- script
- soft
- monitor
- backup
## 配置自动备份脚本
- name: copy Backup file
copy: src=Backup.sh dest=/data/script/
- name: Setting environment variables
file: mode=755 path=/usr/bin/Backup.sh src=/data/script/Backup.sh state=link
## 配置每日缓存清理脚本,并加入到cron
- name: copy clean_cache file
copy: src=clean_cache.sh dest=/data/script/
- name: Join planned tasks
cron:
minute: 0
hour: 1
job: /usr/bin/bash /data/script/clean_cache.sh
name: clean_cache
## 服务器优化脚本
- name: Execute server_optimize script
script: linux_env_optimize.sh
三、执行脚本
1、测试下执行的主机是否正确
ansible test --list-host
2、执行playbook脚本文件
ansible-playbook -vv auto_install.yml
四、结果验证
1、验证lvm磁盘挂载情况
ansible test -m shell -a 'lsblk'
## 磁盘已初始化并挂载到 /data 盘
2、验证备份脚本和缓存脚本是否正常
ansible test -m shell -a 'whereis Backup.sh'
ansible test -m shell -a 'crontab -l'
3、验证 /data 目录下常见目录的创建情况
ansible test -m shell -a 'tree /data'
4、验证优化情况
ansible test -m shell -a 'systemctl status firewalld'
以上是关于ansible-playbookansible对服务器进行批量优化的主要内容,如果未能解决你的问题,请参考以下文章
ansible-playbookansible服务端的在线和离线安装
ansible-playbookansible服务端的在线和离线安装