我需要将文件格式机A复制到机器B,而我运行所有安全任务的控制机器是机器C(本地机器)
我尝试过以下方法:
在ansible的shell模块中使用scp命令
hosts: machine2
user: user2
tasks:
- name: Copy file from machine1 to machine2
shell: scp user1@machine1:/path-of-file/file1 /home/user2/file1
Run Code Online (Sandbox Code Playgroud)
这种方法一直持续下去.
使用获取和复制模块
hosts: machine1
user: user1
tasks:
- name: copy file from machine1 to local
fetch: src=/path-of-file/file1 dest=/path-of-file/file1
hosts: machine2
user: user2
tasks:
- name: copy file from local to machine2
copy: src=/path-of-file/file1 dest=/path-of-file/file1
Run Code Online (Sandbox Code Playgroud)
这种方法给我一个错误如下:
error while accessing the file /Users/<myusername>/.ansible/cp/ansible-ssh-machine2-22-<myusername>, error was: [Errno 102] Operation not supported on socket: u'/Users/<myusername>/.ansible/cp/ansible-ssh-machine2-22-<myusername>'
Run Code Online (Sandbox Code Playgroud)
任何的意见都将会有帮助.
ant*_*t31 93
要复制远程到远程文件,可以将同步模块与' delegate_to: source-server
'关键字一起使用:
- hosts: serverB
tasks:
- name: Copy Remote-To-Remote (from serverA to serverB)
synchronize: src=/copy/from_serverA dest=/copy/to_serverB
delegate_to: serverA
Run Code Online (Sandbox Code Playgroud)
这个剧本可以从你的机器C运行.
Flo*_*ker 85
正如ant31已经指出你可以使用这个synchronize
模块.默认情况下,模块在控制机器和当前远程主机(inventory_host
)之间传输文件,但是可以使用任务的delegate_to
参数进行更改(重要的是要注意这是任务的参数,而不是模块的参数).
您可以将任务放在任一ServerA
或上ServerB
,但您必须相应地调整传输方向(使用mode
参数synchronize
).
放置任务 ServerB
- hosts: ServerB
tasks:
- name: Transfer file from ServerA to ServerB
synchronize:
src: /path/on/server_a
dest: /path/on/server_b
delegate_to: ServerA
Run Code Online (Sandbox Code Playgroud)
这使用默认值mode: push
,因此文件从delegate(ServerA
)传输到当前的remote(ServerB
).
这可能听起来很奇怪,因为任务已被放置ServerB
(通过hosts: ServerB
).但是,必须记住,任务实际上是在委托主机上执行的,在这种情况下是ServerA
.所以推(从)ServerA
到ServerB
确实是正确的方向.还要记住,我们不能简单地选择不委托,因为这意味着转移发生在控制机器和ServerB
.
放置任务 ServerA
- hosts: ServerA
tasks:
- name: Transfer file from ServerA to ServerB
synchronize:
src: /path/on/server_a
dest: /path/on/server_b
mode: pull
delegate_to: ServerB
Run Code Online (Sandbox Code Playgroud)
这用于mode: pull
反转传输方向.再次,请记住,任务实际上已执行ServerB
,因此pull是正确的选择.
归档时间: |
|
查看次数: |
109432 次 |
最近记录: |