Ansible rsync远程计算机上的两个本地绝对路径?
Ansible版本和操作系统信息:Ansible rsync远程计算机上的两个本地绝对路径?,ansible,Ansible,Ansible版本和操作系统信息: ansible 2.5.0 config file = None configured module search path = [u'/home/naftuli/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /home/naftuli/.local/lib/python2.7/site-packa
ansible 2.5.0
config file = None
configured module search path = [u'/home/naftuli/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /home/naftuli/.local/lib/python2.7/site-packages/ansible
executable location = /home/naftuli/.local/bin/ansible
python version = 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609]
这是基础操作系统Loki,它是Ubuntu 16.04,运行内核4.13.0-38-generic
在中,对于在远程计算机上执行角色的用户来说,synchronize
任务失败
由于我一直在使用connection:local
在我自己的机器上应用程序,所以直到有人向我报告后,我才遇到这种情况
任务的定义如下:
- name: sync man pages
synchronize:
src: "{{ rust_user_home }}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/share/man/man1/"
dest: "/usr/local/share/man/man1/"
become: true
因为我总是在本地运行,“远程”机器和本地机器是一样的,所以这非常有效;使用上述代码,src
将从本地主机复制到远程主机上的dest
然后,我在该PR中对以下内容进行了更改:
- name: sync man pages
synchronize:
src: "{{ rust_user_home }}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/share/man/man1/"
dest: "/usr/local/share/man/man1/"
delegate_to: "{{ inventory_hostname }}"
become: true
但是,现在在本地运行时,Ansible会尝试使用SSH连接到本地计算机。使用同步
,很难找到执行以下操作的方法:
rsync -a /src/dir/ /dest/dir/
如何使用
synchronize
模块来近似此行为?似乎我能够通过使用un(der)文档化的ansible\u连接找到一种解决方法
事实:
-名称:建立连接类型
设定事实:
连接是本地的吗|-
{%-如果ansible_连接==“本地”-%}
真的
{%-else-%}
假的
{%-endif-%}
-名称:同步手册页(本地)
使同步:
src:{rust\u user\u home}/.rustup/toolschains/stable-x86\u 64-unknown-linux-gnu/share/man/man1/“
目的地:“/usr/local/share/man/man1/”
时间:连接是本地的吗
变成:真的
-名称:同步手册页(远程)
使同步:
src:{rust\u user\u home}/.rustup/toolschains/stable-x86\u 64-unknown-linux-gnu/share/man/man1/“
目的地:“/usr/local/share/man/man1/”
委托给:“{{inventory\u hostname}”
何时:非本地连接
变成:真的
如果远程连接,它将使用委托在正确的位置运行,如果是本地的,它将按照预期使用本地文件系统