我正在嘗試使用同步模塊將文件從Ansible節點複製到遠程節點。同步模塊失敗併成爲
我希望這些文件在遠程節點上以UserB
的形式存在,但我無法直接訪問UserB
。相反UserA
有sudo權限切換到UserB
。所以我以UserA
登錄。
我的環境文件說:
ansible_ssh_user=UserA
ansible_ssh_pass=<PassUserA>
ansible_become_method=sudo
ansible_become_user=UserB
ansible_become_pass=<PassUserA>
我的任務是:
- name: Copy and unarchive webapps node.
synchronize: src=/home/ansible/templates/app/Sprint6/webapps dest=/opt/msdp/ca/app checksum=yes
become: yes
但是當我運行的劇本,我得到一個錯誤:
fatal: [5.232.57.247]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --checksum --archive --rsh 'ssh -S none -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPersist=60s' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' \"/home/ansible/templates/app/Sprint6/webapps\" \"[email protected]:/opt/msdp/ca/app\"", "failed": true, "msg": "sudo: sorry, you must have a tty to run sudo\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]\n", "rc": 12}
在遠程節點,只有UserB
可以寫在:/opt/msdp/ca/app
有沒有我失蹤的配置?
感謝您的詳細回覆。我完全理解了第2點和第3點,但是我的理解存在問題1.你的意思是說,如果啓用/etc/ansible/ansible.cfg中的ssh_args =,它將開始使用我在實驗文件中定義的任何內容?但是我已經能夠在連接到我的目標節點時使用這些屬性。 –
不,這些屬性不用於「同步」模塊,這就是爲什麼它有附加參數use_ssh_args。我不知道如何表達它的不同。 'synchronize'模塊在本地運行,與其他模塊不同。你檢查了我鏈接的文檔頁面嗎?它基本上是一樣的。 – techraf
謝謝techraf!我現在明白了。併爲「實驗室」文件道歉。我的意思是環境文件。 –