Ansible synchronize 模块
2018-07-03 by dongnan
目标
- 了解
ansible synchronize
模块的功能。 - 使用
synchronize
模块,同步远程服务器数据到本地。
要点
synchronize
模块要求,主控与被控双方系统必须安装rsync
系统包,否则无法使用。- 默认的同步的方式是
push
推送模式,如果使用pull
拉取模式,需要显示指定参数mode=pull
。
举个栗子
命令行方式
同步远程服务器的数据,到本地 /tmp
目录。
ansible node1 -m synchronize -a "mode=pull src=/var/lib/rancher/volumes/rancher-nfs dest=/tmp/"
node1 | SUCCESS => {
"changed": true,
"cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null --out-format=<<CHANGED>>%i %n%L node1:/var/lib/rancher/volumes/rancher-nfs /tmp/",
"msg": ".d..t...... rancher-nfs/scfs_web-data_4a5b7/\n>f+++++++++ rancher-nfs/scfs_web-data_4a5b7/abc\n",
"rc": 0,
"stdout_lines": [
".d..t...... rancher-nfs/scfs_web-data_4a5b7/",
">f+++++++++ rancher-nfs/scfs_web-data_4a5b7/abc"
]
}
命令参数
-m
使用synchronize
模块。-a
使用 这个模块的参数。mode=pull
拉取模式,即同步远程数据到本地,默认为push
模式,是推送本地数据到远程服务器。src=xxx
数据源地址。dest=xxx
目标地址。
playbook 方式
使用 synchronize
模块,同步 rancher
数据。
配置文件
cat sync.yml
---
- hosts: node1
tasks:
- name: rancher-nfs
synchronize:
mode: pull
src: "/var/lib/rancher/volumes/rancher-nfs"
dest: "/data/backup/node1/"
- name: node1-aof
synchronize:
mode: pull
src: "/var/lib/docker/volumes/smln_rds-data_569fb"
dest: "/data/backup/node1/"
- hosts: node3
tasks:
- name: node3-aof
synchronize:
mode: pull
src: "/var/lib/docker/volumes/scfs_redis-data_9ef00"
dest: "/data/backup/node3/"
- name: node3-sign
synchronize:
mode: pull
src: "/var/lib/docker/volumes/smln_sign-data_19978"
dest: "/data/backup/node3/"
执行 playbook 任务
ansible-playbook sync.yml
验证数据同步
tree -d -L 1 /data/backup/
/data/backup/
├── node1
└── node3