跳转至

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 

参考

ansible-doc

回到页面顶部