【问题标题】:Copy files between nodes with ansible使用 ansible 在节点之间复制文件
【发布时间】:2016-08-12 03:51:12
【问题描述】:

我发现this SO post 关于使用 ansible 在节点之间复制文件。这是 ansible 任务:

- name: Copy Pipeline files
  synchronize: mode=pull src=/home/ec2-user/nlp/nlp_test/all_data/test/ dest=/opt/nlp-ml/rate/Pipeline dirs=yes
  delegate_to: "{{ ml_ip }}"

我用我的剧本尝试过,但失败并显示消息:

msg: Warning: Identity file /Users/me/me.pem not accessible: No such file or directory.
Permission denied (publickey).

这是有道理的,因为我的身份文件存储在本地而不是远程计算机上。但是,源节点的公钥已经分发给了目标节点。我该如何解决这个问题?

编辑:我尝试将目标节点的公钥添加到源节点。然后我将use_ssh_args=yes 添加到同步任务中。之后,我将ssh_args = -i /home/ec2-user/.ssh/id_rsa(源节点和目标节点上的私钥的位置)添加到 ansible.cfg。同样的问题。

【问题讨论】:

  • @vvchik 我刚刚更新了答案以显示 ansible 任务 - 我最初没有包含它,因为它与其他 SO 帖子非常接近。
  • ml_ip 源服务器还是目标服务器?尝试在您的任务中删除mode=pull

标签: ansible


【解决方案1】:

所以为了做到这一点,它需要结合我尝试过的东西。 @vvchik 建议我尝试删除 mode=pull,它最初不起作用。但是,当与 use_ssh_args 结合使用时,我能够让它工作。对于任何想要完整解决方案的人,这里是:

在源节点上生成一个 ssh 密钥(在默认位置并且没有密码)并将其安装在目标节点上。添加此任务:

- name: Copy files from source to destination
  synchronize: src=source dest=destination dirs=yes use_ssh_args=yes
  delegate_to: "{{ source_ip }}"

最后,在 ansible.cfg 中添加ssh_args = -i /home/user/.ssh/id_rsa。 ansible.cfg 应该在当前目录中。

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2019-11-16
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多