【问题标题】:Ansible: How to copy files remote to remoteAnsible:如何将文件远程复制到远程
【发布时间】:2018-01-05 12:06:54
【问题描述】:

我需要从远程主机复制文件/etc/resolv.conf 并将其复制到多个远程主机上。

my hosts:
Ansible
ubuntu1-4

我想将此文件从ubuntu1 复制到ubuntu2ubuntu3ubuntu4 我尝试了synchronize 模块,但我不能/不想在ubuntu1-4 上使用rsync 作为恶魔。

有没有比在 Ansible 上复制它并从 Ansible 复制到 ubuntu24 更好的方法?

【问题讨论】:

  • 是的,我知道这个链接,但他们使用同步。
  • 这并没有改变这是实现它的方法的事实。 Ansible 没有被写入在目标机器之间复制文件。同步模块在 Ansible 模块中已经是一个例外(违反概念)。即使假设有人编写了另一个与synchronize 具有相同功能的问题,该答案也应该发布在另一个问题下,而不是在这里。这个应该关闭,但我今天的关闭投票用完了。
  • 这个标题误导了ansible“远程到远程”在这种情况下是在同一台主机上。因此,如果新用户正在搜索“将文件远程复制到远程”,他们将在真正完成任务之后得到这个: - 复制:src:/home/resolv.conf dest:/etc/resolv.conf remote_src:是` 请考虑将标题更改为“Ansible:如何在远程主机之间复制文件”或“Ansible:如何在远程主机之间同步文件”

标签: ansible


【解决方案1】:

如果您只是在谈论单个文件,则不需要 synchronize 模块。您可以使用fetch 模块从远程主机获取文件。在本地系统上获得文件后,您可以使用 copy 模块将其分发到其他主机。

类似:

- hosts: ubuntu1
  tasks:
    - fetch:
        src: /etc/resolv.conf
        dest: ./resolv.conf
        flat: true

- hosts: all:!ubuntu1
  tasks:
    - copy:
        src: ./resolv.conf
        dest: /etc/resolv.conf

虽然这可行,但更好的解决方案是将适当的resolv.conf 作为您的 ansible 配置的一部分并将其分发给所有主机,而不是将其从一个远程复制到其他主机。

【讨论】:

  • @MichallKo 它如何满足您指定的要求“有比将其复制到 Ansible 并从 Ansible 复制到 ubuntu2-4 更好的方法吗?”?
  • 这不是“远程到远程”的答案。这是“远程主机到远程”的答案。它可能对 OP 有用,但他或她问错了问题。
  • 谢谢,这正是我想要的,我更喜欢 ansible 进行复制而不是在主机之间打开 ssh
  • @NicholasMartinez 这仍然是远程到远程,但通过控制器。真正的远程到远程复制需要在远程主机之间设置 ssh 访问,这是不可取的,特别是如果仅出于此目的需要它时。实际上可以通过 ad-hoc 端口进行复制(例如,使用 rsync 或 netcat),但企业环境通常有 ACL 限制端口,因此这应该是最可靠的方法。
【解决方案2】:

如果您想将文件从远程复制到 ansible 控制节点 - 我们可以使用 ansible fetch 模块。 这适用于 Linux 和 windows 机器。

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多