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
posted @ 2021-08-18 14:16  feel-ll  阅读(129)  评论(0)    收藏  举报