ansible自动化运维,剧本(三)
二、剧本
- 目标
- 自动部署某个服务nfs
- 自动部署lnmp
- 任务:自动部署系统的基础优化
01 playbook剧本初使用
cp /etc/ansible/hosts /server/playbook/
[root@m01 playbook]# cat show.yml
- hosts: all
tasks:
- name: show ip addr
shell: hostname -I >/tmp/ip.txt
[root@m01 playbook]#
ansible-playbook -i hosts -C show.yml
ansible-playbook -i hosts show.yml
vim show.yml
cat show.yml
yum install -y cowsay
ansible-playbook -i hosts show.yml
[root@m01 playbook]# tree /server/playbook/
/server/playbook/
├── hosts
└── show.yml
0 directories, 2 files
[root@m01 playbook]#
02 playbook剧本-部署配置nfs 入门->放弃
- 目标
- 配置nfs服务端-backup ,共享目录/playbook-backup/ 共享172.16.1.0/24 all_squash访问
#01书写剧本流程
##1) 把对应的过程翻译为命令
a)安装nfs
yum install -y nfs-utils
b)配置nfs 服务端
/playbook-backup/ 172.16.1.0/24(rw,sync,all_squash)
mkdir -p /playbook-backup
chown -R nfsnobody.nfsnobody /playbook-backup
c)启动与开机自启动
systemctl enabled nfs rpcbind
systemctl start rpcbind nfs
d)本地挂载
mount -t nfs 172.16.1.41:/playbook-backup /mnt
##2) 找出命令对应模块
a) yum 安装nfs
-m yum -a 'name=nfs-utils state=installed'
b) 配置nfs 服务端
copy
-m copy -a 'dest=/etc/exports content="/playbook-backup/ 172.16.1.0/24(rw,sync,all_squash)" '
file
-m file -a 'path=/playbook-backup state=directory owner=nfsnobody group=nfsnobody '
c)启动与开机自启动
systemd
-m systemd -a 'name=rpcbind enabled=yes state=started '
-m systemd -a 'name=nfs enabled=yes state=started '
d)本地挂载
mount
-m mount -a 'fstype=nfs src=172.16.1.41:/playbook-backup dest=/mnt state=mounted '
##3) 根据模块书写剧本
[root@m01 playbook]# vim 02-nfs.yml
- hosts: backup
tasks:
- name: install nfs rpcbind
yum: name=nfs-utils state=installed
- name: configure nfs exports file
copy: dest=/etc/exports content="/playbook-backup/ 172.16.1.0/24(rw,sync,all_squash)"
- name: mkdir chown
file: path=/playbook-backup state=directory owner=nfsnobody group=nfsnobody
- name: start && enable rpc
systemd: name=rpcbind enabled=yes state=started
- name: start && enable nfs
systemd: name=nfs enabled=yes state=started
- name: mount test
mount: fstype=nfs src=172.16.1.41:/playbook-backup path=/mnt state=mounted
~
##4) 调试剧本
nsible-playbook -i hosts -C 02-nfs.ym
##5) 正式使用
nsible-playbook -i hosts 02-nfs.ym
03 playbook剧本-部署配置rsync 全网备份入门->放弃
#一:部署守护进程
#01书写剧本流程
##1) 把对应的过程翻译为命令
rsync服务端:
a)安装rsunc服务
yum install -y rsync
b)编辑配置文件
c)创建rsync服务的虚拟优化
useradd rsync -M -s /sbin/nologin
d)创建备份服务认证密码文件
echo "oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
e)创建备份目录并修改属主属组信息
#mkdir /backup
#chown rsync.rsync /backup/
f)启动备份服务
systemctl start rsyncd
systemctl enable rsyncd
rsync受控端:
a)创建一个密码文件
echo "oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
b)进行交互传输数据--增量传输
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
##2) 找出命令对应模块
##3) 根据模块书写剧本
##4) 调试剧本
##5) 正式使用
[root@m01 playbook]# cat rsyncd.yml
- hosts: 172.16.1.52
tasks:
- name: step01:install rsync
yum: name=rsync state=installed
- name: step02:edit rsync conf file#配置文件
copy: src=/etc/ansible/conf/rsync_conf/rsyncd.conf dest=/etc/
- name: step03:create rsync user
user: name=rsync state=present create_home=no shell="/sbin/nologin"
- name: step04:create rsync auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync.password dest=/etc/ mode=600
- name: step05:create rsync dir
file: dest=/backup/ state=directory owner=rsync group=rsync
- name: step06:boot rsync server
systemd: name=rsyncd.service state=started enabled=yes
- hosts: 172.16.1.31 #仅测试,指定主机清单多主机备份【换为all】
tasks:
- name: step01:create auth file
copy: src=/etc/ansible/conf/rsync_conf/rsync.password dest=/etc/rsync.password mode=600
- name: step02:fenfa jiaoben
copy: src=/etc/ansible/conf/rsync_conf/backup.sh dest=/server/scripts/
- name: step03:zhixing jiaoben
shell: "/usr/bin/sh /server/scripts/backup.sh"
- name: step04;cron
cron: name="backup all" minute="*/5" job="/usr/bin/sh /server/scripts/backup.sh >/dev/null 2>&1" state=present
#可配置邮件报警
#其他配置(要传送的数据)
[root@m01 rsync_conf]# pwd
/etc/ansible/conf/rsync_conf
[root@m01 rsync_conf]# ls
backup.sh rsync.password rsync_client.passwd rsyncd.conf
[root@m01 rsync_conf]# cat rsync.password
rsync_backup:oldboy123
[root@m01 rsync_con
[root@m01 rsync_conf]# cat rsync_client.passwd
oldboy123
[root@m01 rsync_conf]# cat rsyncd.conf
config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
fake super = yes
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup] #其他服务器备份模块
comment = welcome to oldboyedu backup!
path = /backup/
[data] #nfs01共享模块
path = /data/
[root@m01 rsync_conf]# cat backup.sh
te passwd_file
echo "oldboy123" >/etc/rsync.password
chmod 600 /etc/rsync.password
#create path vim backup.sh
path="/backup/$(hostname -i)"
[ -f $path ] || mkdir -p $path
#date var
if [ `date +%w` -eq 2 ];then
date="$(date +%F -d "-1day")_week1"
else
date="$(date +%F -d "-1day")"
fi
#create moni-file
mkdir -p /app/logs
#01 tar backup
cd $path &&\
tar zcfh conf_${date}.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /app/logs
#02 create flag
cd $path
find $path -type f -name "*_${date}.tar.gz" |xargs md5sum >$path/$(hostname -i)_md5sum_${date}.flag
#03 push backup
rsync -avz /backup/ rsync_backup@172.16.1.52::backup --password-file=/etc/rsync.password
#04 del +7
find $path -type f -name "*.tar.gz" -mtime +7 |xargs rm -f]#
测试:
[root@m01 playbook]# ansible-playbook -i hosts rsyncd.yml
[root@nfs01 backup]# rm -rf ./*
[root@nfs01 backup]# ls
172.16.1.31
[root@db02 backup]# ll
total 0
drwxr-xr-x 1 rsync rsync 112 2021-08-18 22:04 172.16.1.31

浙公网安备 33010602011771号