1

假设我在某个网络路径中有一个文本文件

例如:\cr-ampd-a01.abcd.loc\BulkFolder\textfile.txt

如何在ansible中将该文件复制到我的控制器机器

注意:我可以通过(WIN+R 和该路径)访问它,然后它会弹出以供凭据访问。

这是带有 win_copy 的示例代码

- name: copy from network to controller
  win_copy:
    src: \\cr-ampd-a01.abcd.loc\BulkFolder\textfile.txt
    dest: C:\Temp\OTW\Mastapps
    remote_src: yes
    become: yes
  vars:
    ansible_become_user: XXX\Uxxxxxx
    ansible_become_pass: PasswordHere

此代码的错误是:无法复制 src 文件,因为它没有退出

另一个使用 net_get

  - name: copy from network to controller
    net_get:
      src: \\cr-ampd-a01.abcd.loc\BulkFolder\textfile.txt
      dest: C:\Temp\OTW\Mastapps
      ansible_network_os: "eos"
      remote_src: True
      become: True
    vars:
      ansible_become_user: XXX\Uxxxxxx
      ansible_become_pass: PasswordHere

此处的错误:必须在此主机上指定 ansible_network_os

我怎样才能做到这一点?

4

1 回答 1

0

您尝试从 CIFS 资源复制文件。我相对确定这不起作用,copy或者win_copy因为它们用于在该(物理)机器上复制文件。因为 CIFS 是一种类似于 HTTP 和 FTP 的协议,所以您需要一个客户端来从远程计算机获取文件。正如您还写的那样,您需要使用一些凭据来标识自己,该win_copy任务没有该选项。

一种选择可能是 - 将网络设备安装到 - 例如 - N:/ 或类似的东西,然后将 win_copy 与 N:/source.txt 一起使用 - 在这种情况下,N:-drive 就像 C:/ 或 D:/机器上的已知路径。看看win_share- https://docs.ansible.com/ansible/latest/modules/win_share_module.html

另一种选择是通过命令 likecommand: copy //server/path/file c:/file或 robocopy 调用本地 CIFS 客户端,但这并不容易实现幂等性。请参阅在 Windows 命令行上将文件复制到网络计算机

net_get从“网络设备”复制文件很有用 - 请查看https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#platform-options以获取支持的平台列表。在列表中 - 我想说从 CIFS 共享应对不受net_get.

于 2020-03-16T08:31:14.907 回答