个人博客转至: www.zhangshoufu.com

通过ansible批量管理三台服务器,使三台服务器实现备份,web01、nfs、backup,把web和nfs上的重要文件被分到backup上,主机ip地址分配如下

Character IP地址 IP地址 主机名
Rsync--server 172.16.1.41 10.0.0.41 backup-rsync-41
NFS-client 172.16.1.31 10.0.0.31 Nfs01-31
Web01 172.16.1.7 10.0.0.7 web01-7

在m01上操作,编写ansible清单和剧本
目录规划:
我们把所有的yaml文件都放在/playbook目录下,配置文件都放在/paly/conf目录下,脚本都放在/playbook/scripts目录下。

[root@m01-61 /]# mkdir /playbook/{conf,scripts}
[root@m01-61 /]# cat /etc/ansible/hosts     ---主机清单
[nfs]
172.16.1.31 ansible_ssh_private_key_file=/root/.ssh/test_id_rsa[web]
172.16.1.7 ansible_ssh_private_key_file=/root/.ssh/test_id_rsa[backup]
172.16.1.41 ansible_ssh_private_key_file=/root/.ssh/test_id_rsa[host:children]
nfs
web
backup

构建基础的剧本,所有的服务器都应用这个剧本

1,基础的额优化,关闭firewalld和selinux,修改ssh,修改dns的文件
2,安装构建epel源
3,安装nfs和rsyn服务
4,创建UID和GID为666的www用户
5,创建rsync推送使用的密钥文件
6,创建一个共同存放脚本的路径
7,创建备份的脚本,编写定时任务
[root@m01-61 /]# cd /playbook/
[root@m01-61 playbook]# cat base.yaml
#zhe shi yi ge ji chu
- hosts: alltasks:#    - name: stop firewall- name: Install Epel reposget_url: url=http://mirrors.aliyun.com/repo/epel-7.repo dest=/etc/yum.repos.d/epel.repo
# ssh firewall selinux hosts- name: Dns client filecopy: src=./conf/resolv.conf dest=/etc/resolv.conf- name: Install service rsync nfs-utilsyum: name=rsync,nfs-utils state=installed- name: create group group: name=www gid=666- name: creat useruser: name=www uid=666 group=www create_home=no shell=/sbin/nologin- name: rsync passwd filecopy: content='1' dest=/etc/rsync.pass mode=0600- name: creat /server/scriptsfile: path=/server/scripts state=directory recurse=yes - name: copy scriptscopy: src=./scripts/client_rsync_backup.sh dest=/server/scripts/client_rsync_backup.sh- name: crontab sh /server/scripts/client_rsync_backup.shcron: name="backup scripts" minute=0 hour=1 job="/usr/bin/bash /server/scripts/client_rsync_backup.sh &> /dev/null "

关闭backup的剧本

1,配置邮件服务,推送校验客户端推送是否完整,并发送邮件
2,创建backup和data目录
3,生成rsync的配置文件, 和密码文件
4,当rsync配置文件修改的时候,自动重启服务
5,每天晚上校验托送过来的备份数据是不是完整
[root@m01-61 playbook]# cat rsync.yaml
- hosts: backuptasks:- name: install mailxyum: name=mailx state=installed- name: configure rsynccopy: src=conf/rsyncd.conf dest=/etc/rsyncd.confnotify: Restart rsync service- name: create dir /datafile: path=/data state=directory owner=www group=www - name: create dir /backupfile: path=/backup state=directory owner=www group=www- name: create file rsync passwdcopy: content='rsync_backup:1' dest=/etc/rsync.password motd=0600- name: configure mailcopy: src=./conf/mail.rc dest=/etc/mail.rc- name: copt scripts checkcopy: src=./scripts/check_backup.sh dest=/server/scripts/check_backup.sh- name: cron rootcron: name="check client backup" minute=0 hour=2 job='/usr/bin/bash /server/scripts/check_backup.sh &> /dev/null'- name: start rsyncservice: name=rsyncd state=startedhandlers:- name: Restart rsync serviceservice: name=rsyncd state=restarted[root@m01-61 playbook]# cat ./conf/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
log file = /var/log/rsyncd.log
[backup]
comment = welcome to backup!
path = /backup
[data]
path = /data      

编写nfs的配置文件

1,配置nfs配置文件,然后编写一旦配置文件发生改变就重启服务
2,配置sersync服务,使一更改配置文件服务就杀死上次的进程,然后重启服务[root@m01-61 playbook]# cat nfs.yaml
- hosts: nfstasks:- name: copy sersynccopy: src=./conf/sersync dest=/usr/local recurse=yes mode=755 notify: statr sersync- name: create /datafile: path=/data state=directory owner=www group=www- name: create nfs filecopy: src=./conf/exports dest=/etc/exportsnotify: restart nfs service- name: start rpcbind rsyncservice: name=rpcbind state=started enabled=yes- name: statrt nfs startservice: name=nfs-server state=started enabled=yeshandlers:- name: restart nfs serviceservice: name=nfs state=restarted- name: statr sersyncshell: " ps aux | grep [s]ersync | awk '{print \"kill -9\"$2}' | bash && /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml"

配置web剧本

[root@m01-61 playbook]# cat web_nfs.yaml
- hosts: webtasks:- name: mount nfsmount: src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted

把所有的剧本合到一起来执行

[root@m01-61 playbook]# cat all.yaml
- import_playbook: /playbook/base.yaml
- import_playbook: /playbook/rsync.yaml
- import_playbook: /playbook/nfs.yaml
- import_playbook: /playbook/web_nfs.yaml 

转载于:https://blog.51cto.com/13447608/2280886

ansbile--playbook剧本案例相关推荐

  1. Ansible Playbook剧本

    编写Ansible Playbook剧本,使用Playbook完成自动化操作 熟悉Playbook语法格式 编写Playbook管理系统账户 编写Playbook管理逻辑卷 编写Playbook管理软 ...

  2. SUDO提权-Ansible配置-变量-Playbook应用案例

    返回 文章目录 1 案例1:配置sudo权限 1.1 问题 1.2 方案 步骤一:配置sudo提权 2 案例2:修改Ansible配置 2.1 问题 步骤一:配置普通用户远程管理其他主机 1)修改主配 ...

  3. ansible———playbook剧本

    ansible--playbook剧本 文章目录 ansible--playbook剧本 一.主机清单 二.Yaml文件 三.playbook剧本 四.Handlers介绍 五.条件测试 一.主机清单 ...

  4. playbook剧本示例

    自动化运维 Ansible的脚本---playbook剧本示例 自动化运维 示例 编写httpd模块 编写mysql模块 编写php模块 编写roles示例 示例 mkdir /etc/ansible ...

  5. Ansible概述与部署及playbook剧本编写

    Ansible自动化运维管理工具的概述与部署 文章目录 Ansible自动化运维管理工具的概述与部署 一.Ansible简介 1.Ansible概述 2.ansible环境安装部署 3.ansible ...

  6. Playbook剧本

    `|`和>的区别:|它保留换行符,>把多行合并为一行 Playbook剧本 常用于复杂任务的管理,以及管理经常要完成的任务 playbook也是通过模块和它的参数,在特定主机上执行任务 p ...

  7. 【Ansible】Playbook剧本

    Playbook剧本 一.剧本三要素 剧本 playbook 1.场地 1.主机组hosts 2.演员 2.执行用户 3.故事情节 3.执行的任务(调用ansible模块) 二.剧本组成 playbo ...

  8. Ansible自动化运维工具之playbook剧本编写

    内容预知 目录 内容预知 1.playbook的相关知识 1.1 playbook 的简介 1.2 playbook的 各部分组成 2. 基础的playbook剧本编写实例 实例1:playbook编 ...

  9. playbook 剧本编写

    文章目录 一: playbooks 简述 1.1 什么是playbooks 1.2 playbooks的组成 1.3 playbooks剧本示例 1.3.1 先修改/etc/ansible/hosts ...

最新文章

  1. 成员函数的const究竟修饰的是谁
  2. C#中base64编码与解码
  3. 深究AngularJS——ui-router详解
  4. 直播预告丨如何用 A/B 测试做好一场页面布局试验?
  5. asp.net mvc 重定向
  6. pandas-数据分析
  7. HTML比较常用的标签
  8. Servlet之请求转发和响应重定向
  9. Solaris下怎样改动文件创建时间及查询
  10. 【连载】人类唯一的出路:变成人工智能(二)脑机接口
  11. 总结输入阻抗和输出阻抗
  12. springboot 动态指定日志路径(logback) 自动跟随项目路径
  13. Python爬虫福利:带你爬取妹子图上的美女图片,学习改变生活
  14. 【Python 22】52周存钱挑战2.0(列表list和math函数)
  15. [机缘参悟-84]:读《心若菩提 - 曹德旺》有感
  16. 会声会影2022测试新版本号V25.0.0.373
  17. Android开发艺术探索读书笔记(第5章 RemoteView)
  18. Vulkan的基本概念:如何使用Vulkan绘制三角形?
  19. Godaddy 添加子域名
  20. 服务器里微信怎么多开,谈谈微信多开

热门文章

  1. BHMS的完整形式是什么?
  2. java timezone_Java TimeZone inDaylightTime()方法及示例
  3. 二、织物具备超级防水效果的条件?
  4. Linux内核设计与实现---页高速缓存和页回写
  5. 外部中断---STM32F1
  6. php 查看 实例 的方法,php – 从Laravel 5.1中的通用数据库查询中获取Eloquent模型的实例...
  7. vue复选框组件自定义对勾_vue+element:树级复选框组件使用
  8. C++ 继承中的同名成员的情况01
  9. TCP服务器/客户端实例(C/C )
  10. 进程间通信————有名管道