ansible-playbook 基础介绍

playbook是由一个或多个模块组成的,使用多个不同的模块,完成一件事情。

playbook通过yaml语法识别描述的状态文件。扩展名是yaml

1.YAML三板斧

  • 缩进

    • YAML使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用tabs
  • 冒号

    • 以冒号结尾的除外,其他所有冒号后面所有必须有空格。
  • 短横线

    • 表示列表项,使用一个短横杠加一个空格。
    • 多个项使用同样的缩进级别作为同一列表。
  • 安装httpd服务->playbook

    1.安装

    2.配置

    3.启动

2. ansible playbook 安装apache 示例

[root@m01 ansible_playbook]# vim  webserver.yaml
- hosts: web
tasks:
- name: Install Httpd Server
yum: name=httpd,httpd-tools state=installed - name: Configgure Httpd Server
copy: src=./file/httpd.conf dest=/etc/httpd/conf/httpd.conf
notify: Resart Httpd Server - name: Start Httpd Server
service: name=httpd state=started enabled=yes handlers:
- name: Resart Httpd Server
service: name=httpd state=restarted

案例 全网备份 实时备份

环境规划

角色 外网IP(NAT) 内网IP(LAN) 部署软件
m01 eth0:10.0.0.61 eth1:172.16.1.61 ansible
backup eth0:10.0.0.41 eth1:172.16.1.41 rsync
nfs eth0:10.0.0.31 eth1:172.16.1.31 nfs、Sersync
web01 eth0:10.0.0.7 eth1:172.16.1.7 httpd

目录规划

[root@m01 ansible_playbook]# pwd
/etc/ansible/ansible_playbook
[root@m01 ansible_playbook]# tree
.
├── base.yaml
├── conf
│ ├── confxml.xml
│ ├── exports
│ ├── resolv.conf
│ ├── rsyncd.conf
│ └── web.yaml
├── file
│ └── sersync2.5.4_64bit_binary_stable_final.tar.gz
├── mail.yaml
├── nfs.yaml
├── rsync.retry
├── rsync.yaml
├── scripts
│ ├── rsync_backup_md5.sh
│ └── rsync_check_backup.sh
└── sersync.yaml 3 directories, 14 files

base.yaml

[root@m01 ansible_playbook]# vim base.yaml
- hosts: all
tasks:
- name: clear yum.repos.d
file: path=/etc/yum.repos.d/ state=absent - name: Create yum.repos.d
file: path=/etc/yum.repos.d/ state=directory - name: Install Base Repos
get_url: url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/CentOS-Base.repo - name: Install Epel Repos
get_url: url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/etc/yum.repos.d/epel.repo - name: Dns Client
copy: src=./conf/resolv.conf dest=/etc/rsolv.conf - name: Install Rsync Nfs-Utils
yum: name=rsync,nfs-utils state=installed - name: Create Group WWW
group: name=www gid=666 - name: Create User WWW
user: name=www uid=666 group=666 create_home=no shell=/sbin/nologin - name: Create Rsync_Client_Pass
copy: content='1' dest=/etc/rsync.pass mode=600 - name: Create Sripts Directory
file: path=/server/scripts/ recurse=yes state=directory - name: Push Scripts
copy: src=./scripts/rsync_backup_md5.sh dest=/server/scripts/ - name: Crontable Scripts
cron: name="backup scripts" hour=01 minute=00 job="/usr/bin/bash /server/scripts/rsync_backup_md5.sh &>/dev/null"

rsync.yaml

[root@m01 ansible_playbook]# cat rsync.yaml
- hosts: backup
tasks: - name: Installed Rsync Server
yum: name=rsync,mailx state=installed - name: configure Rsync Server
copy: src=/etc/ansible/ansible_playbook/conf/rsyncd.conf dest=/etc/rsyncd.conf
notify: Restart Rsync Server - name: Create Virt User
copy: content='rsync_backup:1' dest=/etc/rsync.password mode=600 - name: Create Date
file: path=/data state=directory recurse=yes owner=www group=www mode=755 - name: Create Backup
file: path=/backup state=directory recurse=yes owner=www group=www mode=755 - name: Start RsyncServer
service: name=rsyncd state=started enabled=yes - name: Push Check Scripts
copy: src=./scripts/rsync_check_backup.sh dest=/server/scripts/ - name: Crond Check Scripts
cron: name="check scripts" hour=05 minute=00 job="/usr/bin/bash /server/scripts/rsync_check_backup.sh &>/dev/null" handlers:
- name: Restart Rsync Server
service: name=rsyncd state=restarted

nfs.yaml

[root@m01 ansible_playbook]# cat nfs.yaml
- hosts: nfs
tasks: - name: Installed Nfs Server
yum: name=nfs-utils state=installed - name: Configure Nfs Server
copy: src=./conf/exports dest=/etc/exports
notify: Restart Nfs Server - name: Create Share Data
file: path=/data state=directory recurse=yes owner=www group=www mode=755 - name: Start Nfs Server
service: name=nfs-server state=started enabled=yes handlers:
- name: Restart Nfs Server
service: name=nfs-server state=restarted

sersync.yaml

[root@m01 ansible_playbook]# cat sersync.yaml
- hosts: nfs
tasks: - name: Scp Sersync
copy: src=./file/sersync2.5.4_64bit_binary_stable_final.tar.gz dest=/usr/local/sersync.tar.gz - name: Zip
shell: cd /usr/local && tar xf sersync.tar.gz && mv GNU-Linux-x86 sersync
args:
creates: /usr/local/sersync - name: configure Sersync
copy: src=./conf/confxml.xml dest=/usr/local/sersync/confxml.xml
notify: kill old sersync and restart new sersync - name: Start Sersync
shell: pgrep sersync;
[ $? -eq 0 ] || /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml handlers:
- name: kill old sersync and restart new sersync
shell: pgrep sersync | xargs kill -9;
/usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

web.yaml

[root@m01 ansible_playbook]# cat web.yaml
- hosts: web
tasks: - name: Mount NFS Server Share Date
mount: src=172.16.1.31:/data path=/data fstype=nfs opts=defaults state=mounted - name: Install Httpd Php
yum: name=httpd,php state=installed - name: Configurl copy
copy: src=./conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
notify: Restart Httpd - name: Unzip kaoshi.zip
unarchive: src=./file/kaoshi.zip dest=/data/ creates=/data/index.html - name: Start Httpd
service: name=httpd state=started enabled=yes handlers:
- name: Restart Httpd
service: name=httpd state=restarted

mail.yaml

[root@m01 ansible_playbook]# cat mail.yaml
- import_playbook: base.yaml
- import_playbook: rsync.yaml
- import_playbook: nfs.yaml
- import_playbook: sersync.yaml
- import_playbook: web.yaml

ansible-playbook 实战案例 全网备份 实时备份的更多相关文章

  1. 【集群实战】共享存储实时备份(解决nfs共享存储的单点问题)

    1. nfs存储的单点问题 如果nfs服务器宕机了,则所有的nfs客户机都会受到影响.一旦宕机,会丢失部分用户的数据.为了解决单点问题,需要实现共享存储的实时备份,即:将nfs服务端共享目录下的数据实 ...

  2. 全网数据实时备份方案[inotify,sersync]

    环境搭建 0.环境安装   gcc  yum install gcc -y 1.安装inotify(源码软件包) 文件下载:https://files.cnblogs.com/files/ftl101 ...

  3. rsync+inotify实现全网自动化数据备份-技术流ken

    rsync简介 “rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步” rsync的功能和特点 ...

  4. 通过rsync+inotify实现数据的实时备份

    我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,r ...

  5. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  6. 搭建企业级全网数据定时备份方案[cron + rsync]

    1.1.1. 服务端的配置[192.168.25.141] Rsync的端口是:873 man rsyncd.conf 查看帮助 Rsync是Redhat默认自带的,这里只是做了rsync服务器端的后 ...

  7. ITDB系统搭建及实时备份

    ITDB系统搭建及实时备份 ITDB简介 ITDB一款来自希腊的开源IT资产管理系统,它是基于Web的IT资产信息管理系统.对于那些IT设备较多而又缺少管理IT资产信息工具的公司,ITDB是一个不错的 ...

  8. 通过rsync+inotify实现数据的实时备份(多台备份机)

    在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足  与传统的cp.ta ...

  9. 通过rsync+inotify实现数据的实时备份 【转载】

       在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足  与传统的cp ...

随机推荐

  1. ES6核心特性

    摘要:聊JS离不开ES6啊! 原文:ES6核心特性 作者:ljianshu 前言 ES6 虽提供了许多新特性,但我们实际工作中用到频率较高并不多,根据二八法则,我们应该用百分之八十的精力和时间,好好专 ...

  2. 用函数式编程对JavaScript进行断舍离

    译者按: 当从业20的JavaScript老司机学会函数式编程时,他扔掉了90%的特性,也不用面向对象了,最后发现了真爱啊!!! 原文: How I rediscovered my love for ...

  3. Your local changes to the following files would be overwritten by merge:

    在服务器改动之后,用sourcetree提交会产生冲突,解决办法:

  4. JavaScript解析机制与闭包原理实例详解

    js代码解析机制: js代码解析之前会创建一个如下的词法环境对象(仓库):LexicalEnvironment{ } 在扫描js代码时会把: 1.用声明的方式创建的函数的名字; 2.用var定义的变量 ...

  5. 洛谷P2503 [HAOI2006]均分数据(模拟退火)

    题目描述 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: 输入输出格式 输入格式: 输入文件data.in包括: 第一行 ...

  6. css不受高度限制实现文本超出隐藏并以省略号结束

    文本超出省略号显示代码: overflow: hidden; text-overflow:ellipsis; white-space: nowrap;width: 100px; /*宽度做好限制*/ ...

  7. mysql随笔系列-1

    MySQL数据库管理 本人实验所用的MySQL数据库版本:5.5.56-MariaDB MariaDB Server  操作系统:centos7.5 1.创建数据库 MariaDB [(none)]& ...

  8. Android为TV端助力 转载自jguangyou的博客,XML基本属性大全

    android:layout_width 指定组件布局宽度 android:layout_height 指定组件布局高度 android:alpha 设置组件透明度 android:backgroun ...

  9. web-worker 的使用

    JavaScript采用的是单线程模式,它每次也只能执行一个事件,所以它在加载大量的事件的时候会比较慢. 而web-worker的作用就是给JavaScript提供一个多线程的模式. 注意的是 web ...

  10. Java根据年龄段获取对应年份起始时间戳和最终时间戳、根据生日时间戳获取月份(与数据库的时间戳处理成的月份拼接成SQL条件)

    1.传入年龄段,两个值,一个最小值,一个最大值,然后获取该年龄段的两个时间戳: (1)处理时间方法: /** * 根据年龄获取时间戳(开始年龄key取0,返回一年最后一秒时间戳,时间戳大:反之结束年龄 ...