ansible复制模块

本文概述

  • 将文件从本地复制到远程
  • 将目录从本地复制到远程
  • 在远程计算机上的目录之间复制文件
Ansible提供了借助复制和获取模块复制文件和目录的功能。复制模块具有多种功能。
复制模块用于将文件和文件夹从本地计算机复制到远程服务器。并且获取模块将数据从远程计算机复制到本地计算机。
如果要在替换变量后复制文件,例如具有IP更改的配置文件,或者也可以使用模板模块。你可以使用此模块执行许多复杂的任务。
将文件从本地复制到远程【ansible复制模块】复制模块用于检查本地计算机上src参数中设置的文件。然后,它将数据复制到destpath中指定的远程机器路径。
在下面的示例中,我们将本地计算机的主目录中的sample.txt文件复制到远程服务器上的/ tmp目录中。只要我们没有为文件指定任何权限,就将远程文件的默认权限设置为-rw-rw-r-(0664)。
- hosts: blocks tasks: - name: Ansible copy file to a remote server copy: src: ~/sample.txt dest: /tmp

情况1:如果该文件已经存在于远程服务器上,但是源文件的内容不同,则将修改目标文件。你可以通过设置力参数来控制它。默认设置为是。因此,它默认情况下会修改文件。
如果你不想修改文件,如果源文件不同,则可以将其设置为No。如果远程服务器上不存在该文件,则以下任务将复制该文件。
- hosts: blocks tasks: - name: Ansible copy file force copy: src: ~/sample.txt dest: /tmp force: no

情况2:如果在本地计算机上找不到该文件,则Ansible会引发错误。
例如:fatal:[remote-machine-1]:FAILED!=> {“ changed”:false,“ failed”:true,“ msg”:“无法在预期路径中找到’ ?/ sample.txt’ 。” }
将目录从本地复制到远程你还可以使用Ansible复制模块复制文件夹或目录。如果“ src”路径是目录,则将以递归方式复制它。否则将复制整个目录。
此任务有两种不同的变体。取决于你是否在“ src”路径的端点处使用“ /”字符。
第一种方法将在远程服务器上创建一个目录,其名称在src参数中设置。然后,它将复制源文件夹的内容并将其粘贴到该目录中。
如果你想要这种行为,则它不会在src参数中的路径后给出’ /’ 。
在下面的示例中,它将首先在远程服务器的/ tmp中创建一个名为copy_dir_ex的目录。
- hosts: blocks tasks: - name: Ansible copy the directory to the remote server copy: src:/Users/mdtutorials2/Documents/Ansible/copy_dir_ex dest:/Users/mdtutorials2/Documents/Ansible/tmp

在远程计算机上的目录之间复制文件Ansible副本使你可以将文件从同一远程计算机上的一个目录复制到另一个目录。但这仅适用于文件,不适用于目录。你可以使用remote_src参数让Ansible知道你的意图。
下面的代码会将/tmp/test.txt复制到用户的主目录(/ home / [用户名] /)。
--- -hosts: webservers tasks: -name: copy the file between directories on a remote server copy: src: /tmp/test.txt dest: ~/test.txt remote_src: yes

    推荐阅读