ansible.windows.win_copy 模块 – 将文件复制到 Windows 主机的远程位置

注意

此模块是 ansible.windows 集合 (版本 2.5.0) 的一部分。

如果您正在使用 ansible 包,则您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install ansible.windows

要在 playbook 中使用它,请指定: ansible.windows.win_copy

概要

  • win_copy 模块将本地计算机上的文件复制到 Windows 远程位置。

  • 对于非 Windows 目标,请改用 ansible.builtin.copy 模块。

注意

此模块具有相应的 action 插件

参数

参数

注释

backup

布尔值

确定是否应创建备份。

设置为 true 时,将创建包含时间戳信息的备份文件,以便您可以找回原始文件(如果您不小心错误地覆盖了它)。

remote_src=False 且正在复制多个文件时,不会进行备份。

选项

  • false ← (默认)

  • true

content

字符串

如果不用 src,则直接将文件的內容设置为指定值。

这适用于简单值,对于任何复杂或带格式的值,请切换到 ansible.windows.win_template 模块。

decrypt

布尔值

此选项控制使用 vault 自动解密源文件。

选项

  • false

  • true ← (默认)

dest

路径 / 必填

应将文件复制到的远程绝对路径。

如果 src 是目录,则这也必须是目录。

使用 \ 作为路径分隔符,或在“双引号”中使用 \\。

如果 dest 以 \ 结尾,则源或源的内容将复制到目录而无需重命名。

如果 dest 是不存在的路径,则只有当 dest 以“/”或“\”结尾,或者 src 是目录时,才会创建它。

如果 srcdest 是文件,并且 dest 的父目录不存在,则任务将失败。

force

布尔值

如果设置为 true,则只有当内容与目标内容不同时才会传输文件。

如果设置为 false,则只有当目标不存在时才会传输文件。

如果设置为 false,则不会执行内容校验和,这有助于提高大型文件的性能。

选项

  • false

  • true ← (默认)

local_follow

布尔值

此标志表示应遵循源树中存在的(如果存在)文件系统链接。

选项

  • false

  • true ← (默认)

remote_src

布尔值

如果 false,它将在源/控制器机器上搜索 src。

如果 true,它将转到远程/目标机器以获取 src。

选项

  • false ← (默认)

  • true

src

路径

要复制到远程服务器的文件的本地路径;可以是绝对路径或相对路径。

如果路径是目录,则会将其(包括源文件夹名称)递归复制到 dest

如果路径是目录并且以“/”结尾,则仅将该目录的内部内容复制到目标。否则,如果它不以“/”结尾,则会复制目录本身及其所有内容。

如果路径是文件并且 dest 以“\”结尾,则该文件将使用相同的文件名复制到文件夹。

除非使用 content,否则为必填项。

备注

注意

  • 目前 win_copy 不支持从本地到远程以及从远程到远程的符号链接复制。

  • 建议使用反斜杠 \ 而不是 / 来处理远程路径。

  • 由于 win_copy 模块通过 WinRM 运行,因此它不是一种非常高效的传输机制。如果要发送大型文件,请考虑将它们托管在 Web 服务上,并改用 ansible.windows.win_get_url

  • 当使用 become 与非管理员用户一起使用时,必须使用 ansible_remote_tmp 将远程临时目录设置为既可由 become 用户又可由连接用户访问的目录。有关更多信息,请参见示例。

另请参阅

另请参阅

ansible.builtin.assemble

从片段组装配置文件。

ansible.builtin.copy

将文件复制到远程位置。

ansible.windows.win_get_url

从 HTTP、HTTPS 或 FTP 下载文件到节点。

community.windows.win_robocopy

使用 Robocopy 同步两个目录的内容。

示例

- name: Copy a single file
  ansible.windows.win_copy:
    src: /srv/myfiles/foo.conf
    dest: C:\Temp\renamed-foo.conf

- name: Copy a single file, but keep a backup
  ansible.windows.win_copy:
    src: /srv/myfiles/foo.conf
    dest: C:\Temp\renamed-foo.conf
    backup: true

- name: Copy a single file keeping the filename
  ansible.windows.win_copy:
    src: /src/myfiles/foo.conf
    dest: C:\Temp\

- name: Copy folder to C:\Temp (results in C:\Temp\temp_files)
  ansible.windows.win_copy:
    src: files/temp_files
    dest: C:\Temp

- name: Copy folder contents recursively
  ansible.windows.win_copy:
    src: files/temp_files/
    dest: C:\Temp

- name: Copy a single file where the source is on the remote host
  ansible.windows.win_copy:
    src: C:\Temp\foo.txt
    dest: C:\ansible\foo.txt
    remote_src: true

- name: Copy a folder recursively where the source is on the remote host
  ansible.windows.win_copy:
    src: C:\Temp
    dest: C:\ansible
    remote_src: true

- name: Set the contents of a file
  ansible.windows.win_copy:
    content: abc123
    dest: C:\Temp\foo.txt

- name: Copy a single file as another user
  ansible.windows.win_copy:
    src: NuGet.config
    dest: '%AppData%\NuGet\NuGet.config'
  vars:
    ansible_become_user: user
    ansible_become_password: pass
    # The tmp dir must be set when using win_copy as another user
    # This ensures the become user will have permissions for the operation
    # Make sure to specify a folder both the ansible_user and the become_user have access to (i.e not %TEMP% which is user specific and requires Admin)
    ansible_remote_tmp: 'c:\tmp'

返回值

常用返回值已在 此处 记录,以下是此模块独有的字段:

描述

backup_file

字符串

已创建的备份文件的名称。

返回值:如果 backup=yes

示例: "C:\\Path\\To\\File.txt.11540.20150212-220915.bak"

checksum

字符串

运行复制后文件的 SHA1 校验和。

返回值:成功,src 为文件

示例: "6e642bb8dd5c2e027bf21dd923337cbb4214f827"

dest

字符串

目标文件/路径。

返回值:已更改

示例: "C:\\Temp\\"

operation

字符串

是否发生单个文件复制或文件夹复制。

返回值:成功

示例: "file_copy"

original_basename

字符串

已复制文件的基名。

返回值:已更改,src 为文件

示例: "foo.txt"

size

整数

执行后目标的大小。

返回值:已更改,src 为文件

示例: 1220

src

字符串

目标机器上用于复制的源文件。

返回值:已更改

示例: "/home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source"

作者

  • Jon Hawkesworth (@jhawkesworth)

  • Jordan Borean (@jborean93)