利用ansible一键化部署rsync服务

系统环境

管理端:外网IP-10.0.0.61 内网IP-172.16.1.61
被控rsync服务端:外网IP-10.0.0.7 内网IP-172.16.1.7
被控rsync客户端:外网IP-10.0.0.51 内网IP-172.16.1.51

[root@m01 file]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@m01 file]# uname -r
3.10.0-862.el7.x86_64

主机清单配置文件

[root@m01 roles]# cat ../hosts 
[rsync_client]
172.16.1.51

[rsync_server]
172.16.1.7

提前准备好的本地配置文件

[root@m01 file]# pwd
/etc/ansible/file
[root@m01 file]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 12 17:14 rsyncd.conf
[root@m01 file]# cat rsyncd.conf 
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
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 = "backup dir by oldboy"
path =/backup

rsync服务部署流程(服务端)

1)安装rsync软件
2)创建并编写配置文件
3)创建rsync虚拟用户,禁止shell登录,不创建家目录。
4)创建备份目录,设置好属主属组信息。
5)创建密码文件。(用户名和密码)
6)启动rsync服务

rsync客户端部署流程

1)安装rsync软件
2)创建密码文件(只有密码)

yaml文件内容呈现

[root@m01 roles]# cat rsync.yaml 
- hosts: rsync_server
  tasks:
    - name: 01-install rsync
      yum: name=rsync state=installed
    - name: 02-create rsyncd.conf
      copy: src=/etc/ansible/file/rsyncd.conf dest=/etc
    - name: 03-create user rsync
      user: name=rsync create_home=no shell=/sbin/nologin
    - name: 04-create /backup directory
      file: path=/backup state=directory owner=rsync group=rsync
    - name: 05-create password file
      copy: content=rsync_backup:oldboy123 dest=/etc/rsync.password mode=600
    - name: 06-start rsync service
      service: name=rsyncd state=started enabled=yes

- hosts: rsync_client
  tasks:
    - name: 01-installl rsync
      yum: name=rsync state=installed
    - name: 02-create password file
      copy: content=oldboy123 dest=/etc/rsync.password mode=600
    - name: 03-create test file
      file: dest=/tmp/test.txt state=touch
    - name: 04-test rsync sending
      shell: rsync -avz /tmp/test.txt rsync_backup@172.16.1.7::backup --password-file=/etc/rsync.password

yaml文件执行顺序

1)首先检查语法格式是否正确

ansible-playbook --syntax-check rsync.yaml

2)其次模拟执行(模拟成功不代表真正执行一定成功)

ansible-playbook -C rsync.yaml

3)最后真正执行

ansible-playbook  rsync.yaml
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了减轻多服务器配置和操作工作量以及安全性,特研究此课题,理论上可以同步所有想同步的文件,并且做到一键操作,不需要切换用户,不需要多次操作脚本,中途不需要输入任何字。 1, hosts文件 2, play.yml文件 剧本文件,按标准放到tasks文件夹内,因后面脚本写了路径,如果不愿意放tasks文件夹,需要改后面sh脚本路径参数 3, rsync_notice.py文件 钉钉机器人发送消息文件,此文件放在tools文件夹内,会调用备份日志进行分析,过滤后,发送到钉钉群内。各位同事可修改文件里的Webhoo为自己的机器人key 4, deploy.sh 文件 调用py钉钉文件发消息,并且处理备份日志,删除近期日志等后续事宜,请放在tools文件夹内 1.3.3. 功能基本介绍 1, 在对应脚本里基本都有注释,这里简单介绍下 2, 剧本文件需要在主控机器(备份机器),root用户下运行,运行一次即可,后续sh及py脚本会自动处理。一键搞定所有事情,中途无需手动干预; 3, 自行修改host文件为自己项目地址,bak为备份文件服务器,为安全起见,hosts文件进行了vault加密,密码123456,运行剧本文件,请加—ask-vault-pass 4, 再次提醒,在脚本运行完成后,为保险起见,可将hosts文件中的root密码删除,或修改复杂密码,不会影响后续同步功能。 5, 剧本流程介绍: 1) 主控被控端安装rsync及相关依赖软件; 2) 主控与被控端添加备份用户,rsync; 3) 主控端即备份服务器建立备份文件夹,设置归属用户; 4) 主控及被控端自动切换rsync用户,使用rsync用户配置免密访问所有被控端,即便服务器被黑,rsync用户访问也做不了什么; 5) 主控端即备份服务器使用rsync用户增加同步、日志记录、钉钉发送消息等定时任务; 6) 定时任务里各个需要同步的源地址及项目名称,请自行修改; 7) 日志为叠加记录,钉钉消息发完后,会按日期进行备份,同时删除原日志,因为钉钉消息每天都发,避免冗余数据; 6, 钉钉消息脚本介绍: 1) 访问实时备份日志,考虑到钉钉消息,只需要知道同步是否成功,其余数据不关心,所以读取后,进行数据处理,取出服务器地址、成功标识,或未成功标识; 2) 调用钉钉机器人接口,采取markdown形式,此形式可以定义一个固定的标题,比如:rsync同步情况汇总,这样在钉钉机器人安全设置里,只需要将标题设为关键字即可,具体发送内容千奇百怪也没关系。另外两种方式各有弊端,未研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值