【发布时间】:2018-06-20 22:58:06
【问题描述】:
之前有人问过类似的问题,但没有一个问题得到回答或针对 Vagrant。
我在主机 master 上有一个目录,我想与我的 vagrant 实例同步。这是我的剧本:
- hosts: master
vars:
backup_dir: /var/backups/projects/civi.common.scot/backups/latest/
dest_dir: /var/import
tasks:
- name: Synchronize directories
synchronize:
src: "{{ backup_dir }}"
dest: "{{ dest_dir }}"
mode: pull
delegate_to: default
这是我的库存:
default ansible_host=192.168.121.199 ansible_port=22 ansible_user='vagrant' ansible_ssh_private_key_file='/run/media/daniel/RAIDStore/Workspace/docker/newhume/.vagrant/machines/default/libvirt/private_key'
master ansible_host=hume.common.scot
当我运行这个播放时,该过程似乎没有将任何文件复制到磁盘,但也没有出错或退出。
在我的Vagrantfile 中使用ssh.config.forward_agent = true,我可以从 Vagrant 来宾发出以下命令:
rsync --rsync-path='sudo rsync' -avz -e ssh $remote_user@$remote_host:$remote_path $local_path`
但是,以下剧本不起作用(与使用synchronize 模块时的问题相同):
- name: synchronize directories (bugfix for above)
command: "rsync --rsync-path='sudo rsync' -avz -e ssh {{ remote_user }}@{{ remote_host }}:{{ backup_directory }} {{ dest_dir }}"
我也尝试过使用shell 而不是command。
如何将这些文件复制到我的 vagrant 实例?
【问题讨论】:
-
只是为了确认一下,这是为了备份吗?您没有这样说,但是您的剧本使用“backup_dir”作为变量。因为您可以轻松地将一个文件夹从您的主机映射到您的 vagrant,这将使其保持同步,而无需使用 ansible。
-
不用于备份目的,不。这个想法是将开发机器的内容数据库与生产主机同步。由于生产系统有一个每天填充的备份目录,然后与它自己的备份系统同步,因此使用该备份目录作为数据存储将数据拉入开发环境是有意义的。该开发环境可以是远程云服务器,如果开发人员远程工作,它可以是培训系统,也可以是本地流浪主机。