我正试图用 Ansible 模仿这个整洁的scp
命令:
scp local_file user@remote_host:
上面会将local_file
上传到remote_host
/home/user
Ansible 的 BIG 问题是它需要dst
中的绝对路径,我无法提供,因为我正在上传到router
...
---
- hosts: remote_host
connection: paramiko
gather_facts: False
tasks:
- name: Uploading SSH Pub Key
copy:
src="../keys.d/ssh-keyfile.pub" dest="/"
这本剧本很高兴失败并出现错误:
fatal: [remote_host] => failed to transfer file to syntax error (line 1 column 5)/source
有谁知道任何合理的解决方法?也许可以启动本地命令(在执行 ansible-playbook 的主机上),在我的情况下是scp
,并将其提供给 Ansible vars ?
答案 0 :(得分:1)
在移动文件之前发出远程命令并捕获输出会起作用吗?
tasks:
- command: pwd
register: remote_pwd
- name: Uploading SSH Pub Key
copy:
src="../keys.d/ssh-keyfile.pub" dest="{{ remote_pwd }}"
好的,鉴于路由器的外壳非常有限,那么你可以试试这个(这对我的linux机箱有效,但我还没有路由器可以试试)
---
- hosts: localhost
vars:
user: jonathan
host: 192.168.1.1
file: /tmp/test
idfile: /Users/jonathan/.ssh/id_rsa.pub
tasks:
- name: scp
command: "scp -i {{ idfile }} {{ file }} {{ user }}@{{ host}}:"