Ansible教程

Ansible 复制

Ansible 复制

Ansible 提供了在复制和获取模块的帮助下复制文件和目录的功能。复制模块用途广泛。
复制模块用于将文件和文件夹从本地机器复制到远程服务器。以及用于将数据从远程机器复制到本地机器的 fetch 模块。
如果您想在替换变量后复制文件,例如带有 IP 更改的配置文件,或者您也可以使用模板模块.

将文件从本地复制到远程

复制模块用于检查复制文件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: 如果文件已经存在于远程服务器上,但源文件的内容不同,那么目标文件将被修改。您可以通过设置 force 参数来控制它。默认设置为是。所以它默认修改文件。
如果你不想修改文件,如果源文件不同,那么你可以设置为No。下面的任务将复制文件,如果远程服务器上不存在文件。
-hosts: blocks
  tasks:
 -name: Ansible copy file force
    copy:
      src: ~/sample.txt
      dest: /tmp 
      force: no
情况 2: 如果在本地机器上没有找到该文件,Ansible 会抛出错误。
例如: 致命: [remote-machine-1]: FAILED!=> {"changed": false, "failed": true, "msg": "无法在预期路径中找到 '~/sample.txt'。"}

将目录从本地复制到远程

您还可以使用 Ansible 复制模块复制文件夹或目录。如果 'src' 路径是一个目录,那么它将被递归复制。否则将复制整个目录。
此任务有两种不同的变体。取决于您在"src"路径的端点是否有"/"字符。
第一种方法将在远程服务器上创建一个目录,名称在 src 参数中设置。然后,它会将源文件夹的内容复制并粘贴到该目录中。
如果您想要这种行为,那么它不会在 src 参数中的路径后给出"/"。
p>
在下面的例子中,它会首先在远程服务器的/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/[username]/)。
---
-hosts: webservers 
tasks:
-name: copy the file between directories on a remote server
copy:
src: /tmp/test.txt
dest: ~/test.txt
remote_src: yes
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4