ansible的copy模块

ansible的copy模块

   张吉吉     2019年12月2日 02:02     4212    

1、简介

copy模块就是将ansible的文件拷贝到被ansible管理设备对应的目录位置。

 

2、模块相关参数

src

复制到远程服务器的文件的本地路径。

可以是绝对路径也可以是相对路径。

如果path是一个目录,则递归复制它。如果path以“/”结尾,那么只有目录中的内容才会被复制到目的地。否则,如果不以“/”结尾,则复制包含所有内容的目录本身。此行为类似于rsync命令行工具。

dest

文件复制到的远程服务器的绝对路径。

如果src是一个目录,那么这个目录也必须是一个目录。

如果dest是一个不存在的路径,并且如果dest以“/”结尾,或者src是一个目录,则创建dest。

如果dest是一个相对路径,则启动目录由远程主机决定。

如果src和dest是文件,则不会创建dest的父目录,如果该目录不存在,则任务失败。

owner

指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。

group

指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。

mode

指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r--r--“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。

force

当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

backup

当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。

 

3、示例

(1)示例一

将ansible服务器的test.conf复制到被管理服务器

权限为644

---

- hosts: test

  remote_user: root

  tasks:

  - name: copy file with owner and permission

    copy:

     src: /root/test.conf

     dest: /etc/test.conf

     owner: root

     group: root

     mode: '0644'

 

(2)示例二

将ansible服务器的test.conf复制到被管理服务器

并设置为test用户,权限为755

---

- hosts: test

  remote_user: root

  tasks:

  - name: create user and group

    user: name={{ item }} password={{ "123456" | password_hash('sha512') }}  state="present"

    with_items:

     - test

  - name: set other user and group

    copy:

      src: /root/test.conf

      dest: /etc/test.conf

      owner: test

      group: test

      mode: '0755'

 

文章评论

0

其他文章