我需要rsync從控制機器到控制機器的目錄(源和目標是本地主機)。我遵循指令here並在腳本中添加了delegate_to: localhost
。儘管如此,synchronize指令會嘗試將遠程計算機用作目標並失敗。Ansible Synchronize不尊重delegate_to | Rsync來自控制機器
- name: Copy node_modules over if exists
synchronize:
src: "{{ node_modules_path }}"
dest: "{{ deploy_helper.new_release_path }}/{{ deploy_app_name }}/"
become: true
become_method: sudo
delegate_to: localhost
run_once: true
when: node_modules.stat.exists
下面是輸出:
fatal: [panda -> panda.herokuapp.com]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -S none -o StrictHostKeyChecking=no' --rsync-path=\"sudo rsync\" --out-format='<>%i %n%L' \"/root/node_modules/\" \"[email protected]:/home/deploy/releases/20170404121408/\"", "failed": true, "msg": "\r\nrsync: mkdir \"/home/deploy/releases/20170404121408/\" failed: No such file or directory (2)\nrsync error: error in file IO (code 11) at main.c(605) [Receiver=3.0.9]\nrsync: connection unexpectedly closed (9 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]\n", "rc": 12}
Ansible版本:ansible 2.2.1.0
顯然rsync命令試圖同步到遠程服務器,而不是本地主機。我可以保證路徑/home/deploy/releases/20170404121408/
存在於本地主機上,但不在熊貓上。我錯過了什麼?
@techraf是我做到了。下面是我特別引述的一段話: '''#的兩條路徑都在控制機器 同步 - 同步: 源:一些/相對/路徑 DEST:/一些/絕對/路徑 delegate_to:本地主機 '' ' – rtindru
@techraf src是相對路徑的問題 - 在我的情況下,src和dest都是絕對路徑。我認爲這不會影響行爲,但我很樂意嘗試。 – rtindru