ansible-playbookansible对服务器进行批量优化

Posted 码海小虾米_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible-playbookansible对服务器进行批量优化相关的知识,希望对你有一定的参考价值。

ansible对服务器进行批量优化

一、准备工作

1、服务器准备

IP地址服务器作用系统其他
192.168.80.88ansible服务器centos 7.9部署好ansible,配置完免交互
192.168.80.10测试服务器1centos 7.9硬盘50G
192.168.80.20测试服务器2centos 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服务端的在线和离线安装

ansible-playbookansible服务端的在线和离线安装

ansible-乱

设计思路记录

Zuul+Hystrix