ansible copy 模块

ansible copy 模块

概要

  • copy模块将文件从本地或远程机器复制到远程机器上的某个位置。
  • 使用fetch模块将文件从远程位置复制到本地框。
  • 如果您需要在复制的文件中进行变量插值,请使用模板模块。在字段中使用变量content将导致不可预测的输出。
  • 对于 Windows 目标,请改用win_copy模块。

参数

Parameter(参数) choices(选项)/default comments(注解5)
attributes 生成的文件或目录应该具有的属性。 要获得支持的标志,请查看目标系统上chatr的手册页。 这个字符串应该包含与lsattr显示的相同顺序的属性。
=操作符被假定为默认值,否则需要在字符串中包含+或-操作符
backup yes or no,默认no 创建一个包含时间戳信息的备份文件,这样,如果您以某种方式错误地修改了它,就可以重新获得原始文件。
checksum 正在传输的文件的SHA1校验和用于验证文件的复制是否成功。如果没有提供,ansible将使用src文件的本地计算的校验和。
content 当代替src使用时,将文件的内容直接设置为指定的值。只有当dest是一个文件时才有效。如果文件不存在,则创建该文件。对于高级格式化或内容包含变量,请使用template模块。
decrypt yes or no,默认no 此选项控制使用保险库对源文件进行自动解密。
dest 文件应该复制到的远程绝对路径。1、如果src是一个目录,那么它也必须是一个目录。2、如果dest是一个不存在的路径,并且dest以"/"结尾或者src是一个目录,则创建dest。3、如果dest是相对路径,则启动目录由远程主机决定。4、如果srcdest是文件,则不会创建dest的父目录,如果父目录不存在,则任务失败。
directory_mode 在进行递归复制时,设置目录的模式。如果没有设置,我们将使用系统默认值。该模式只对新创建的目录进行设置,对已经存在的目录不产生影响。
follow yes or no,默认no 这个标志指示目标中的文件系统链接(如果存在的话)应该被跟随。
force yes or no,默认yes 是否要替换远程文件。如果是,当远程文件的内容与源文件不一致时,远程文件将被替换。如果不存在,则只有在目标不存在的情况下才会传输文件。
group 应该拥有该文件/目录的组的名称,这将提供给chown。
local_follow yes or no,默认yes 这个标志指示源树中的文件系统链接(如果存在的话)应该被跟随。
mode 目标文件或目录的权限。对于那些习惯使用/usr/bin/chmod的人,请记住模式实际上是八进制数字。你必须添加一个前导零,以便Ansible的YAML解析器知道它是一个八进制数字(如0644或01777)或引用它(如’644’或’1777’),以便Ansible接收到一个字符串,并可以进行自己的转换,从字符串到数字。给Ansible一个号码,遵循这些规则中的一个将会得到一个小数,这将会产生意想不到的结果。在Ansible 1.8中,模式可以被指定为符号模式(例如,u+rwx或u=rw,g=r,o=r)。在Ansible 2.3中,模式也可以是特殊的字符串保存。preserver意味着文件将被赋予与源文件相同的权限。
owner 应该拥有文件/目录的用户名,这将被提供给chown。
remote_src yes or no,默认no 影响src是否需要转移或已经远程存在。如果no,它将在原始/主机上搜索src。如果yes,它将转到src的远程/目标计算机。从2.8版本开始,Remote_src支持递归复制。Remote_src只适用于mode=preserve版本2.6。
selevel 默认0 SELinux文件上下文的级别部分。这就是MLS/MCS属性,有时也被称为range。当设置为default时,如果可用,它将使用策略的level部分。
serole SELinux文件上下文的角色部分。当设置为_default时,它将使用策略的role部分(如果可用的话)。
setype SELinux文件上下文的type部分。当设置为_default时,它将使用策略的类型部分(如果可用的话)。
seuser SELinux文件上下文的用户部分。default情况下,它使用系统策略。当设置为_default时,它将使用策略的用户部分(如果可用)。
src 要复制到远程服务器的文件的本地路径。这可以是绝对的,也可以是相对的。如果path是目录,则递归复制。在这种情况下,如果path以“/”结尾,则只将该目录中的内容复制到目的地。否则,如果它不是以“/”结尾,则复制包含所有内容的目录本身。这种行为类似于rsync命令行工具。
unsafe_writes yes or no,默认no 影响何时使用原子操作来防止数据损坏或从目标文件进行不一致的读取。默认情况下,该模块使用原子操作来防止数据损坏或不一致地读取目标文件,但有时系统配置或破坏的方式会防止这种情况。一个例子是docker挂载的文件,它不能从容器内部原子地更新,只能以不安全的方式写入。当任务操作失败时,这个选项允许Ansible退回到不安全的方法来更新文件(但是,它不会强迫Ansible执行不安全的写操作)。
重要!不安全的写操作会受到竞争条件的影响,并可能导致数据损坏。
validate 复制到适当位置之前要运行的验证命令。要验证的文件路径是通过’%s’传入的,它必须如下例所示。该命令是安全传递的,因此像扩展和管道这样的shell功能将不起作用

例子

- name: Copy file with owner and permissions
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'

- name: Copy file with owner and permission, using symbolic representation
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u=rw,g=r,o=r

- name: Another symbolic mode example, adding some permissions and removing others
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u+rw,g-wx,o-rwx

- name: Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version
  copy:
    src: /mine/ntp.conf
    dest: /etc/ntp.conf
    owner: root
    group: root
    mode: '0644'
    backup: yes

- name: Copy a new "sudoers" file into place, after passing validation with visudo
  copy:
    src: /mine/sudoers
    dest: /etc/sudoers
    validate: /usr/sbin/visudo -csf %s

- name: Copy a "sudoers" file on the remote machine for editing
  copy:
    src: /etc/sudoers
    dest: /etc/sudoers.edit
    remote_src: yes
    validate: /usr/sbin/visudo -csf %s

- name: Copy using inline content
  copy:
    content: '# This file was moved to /etc/other.conf'
    dest: /etc/mine.conf

- name: If follow=yes, /path/to/file will be overwritten by contents of foo.conf
  copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: yes

- name: If follow=no, /path/to/link will become a file and be overwritten by contents of foo.conf
  copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: no

你可能感兴趣的:(ansible模块,ansible,服务器,网络)