十、Ansible文件操作模块(二)

copy模块

拷贝文件到远程主机

案例

1、将db_servers主机中/testdir/copytest文件复制到远程主机的/opt目录下,注意,如果文件在远程主机目录中存在,远程主机的文件会被覆盖。

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/"

2、将db_servers主机中/testdir/copytest文件复制到远程主机的/opt目录下,如果文件在远程主机目录中存在,且内容与ansible主机的文件内容不同,则不执行拷贝。

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/ force=no"

3、在db_servers主机的/opt目录下生成文件test,test文件中有两行文本,第一行文本为aaa,第二行为bbb,当使用content指定文件内容时,dest参数对应的值必须是一个文件,而不能是一个路径。

$ ansible db_servers -m copy -a 'content="aaa\nbbb\n" dest=/opt/test'

4、拷贝前,先备份远程主机上存在的copytest文件。

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/ backup=yes"

5、拷贝文件时,指定文件的属主,注意,远程主机上必须存在对应的用户。

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/ owner=tz"

6、拷贝文件时,指定文件的属组,注意,远程主机上必须存在对应的组。

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/ group=tz"

7、拷贝文件时,指定文件的权限

$ ansible db_servers -m copy -a "src=/testdir/copytest dest=/opt/ mode=0640"

常用参数

  • src
    用于指定需要copy的文件或目录。

  • dest
    必选参数,用于指定文件将被拷贝到远程主机的哪个目录中。

  • content
    当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。

  • force
    当远程主机的目标路径中已经存在同名文件,是否强制覆盖,默认值为yes表示强制覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。

  • backup
    当远程主机的目标路径中已经存在同名文件,当设置为yes时,会先备份远程主机中的文件,然后再拷贝。

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

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

  • mode
    指定文件拷贝到远程主机后的权限,可以使用mode=0644,也可以使用mode=u+x表示。

file模块

对文件执行基本操作,如,创建文件或目录、删除文件或目录、修改文件权限等

案例

1、在db_servers主机上创建一个名为testfile的文件,如果testfile文件已经存在,则会更新文件的时间戳,与touch命令的作用相同。

$ ansible db_servers -m file -a "path=/testdir/testfile state=touch"

2、在db_servers主机上创建一个名为testdir的目录,如果testdir目录已经存在,则不进行任何操作。

$ ansible db_servers -m file -a "path=/testdir/testdir state=directory"

3、在db_servers主机上为testfile文件创建软链接文件,软链接名为linkfile,执行下面命令的时候,testfile已经存在。

$ ansible db_servers -m file -a "path=/testdir/linkfile state=link src=/testdir/testfile"

4、在db_servers上为testfile文件创建硬链接文件,硬链接名为hardfile,执行下面命令的时候,testfile已经存在。

$ ansible db_servers -m file -a "path=/testdir/hardfile state=hard src=/testdir/testfile"

5、在创建链接文件时,如果源文件不存在时可强制创建链接文件,如果链接文件与其他文件同名时,会强制覆盖同名文件。

$ ansible db_servers -m file -a "path=/testdir/linkfile state=link src=sourcefile force=yes"

6、删除远程机器上的指定文件或目录

$ ansible db_servers -m file -a "path=/testdir/testdir state=absent"

7、在创建文件或目录的时候指定属主,修改远程主机上的文件或目录的属主。

$ ansible db_servers -m file -a "path=/testdir/abc state=touch owner=tz"
$ ansible db_servers -m file -a "path=/testdir/abc owner=tz"
$ ansible db_servers -m file -a "path=/testdir/abc state=directory owner=tz"

8、在创建文件或目录的时候指定属组,修改远程主机上的文件或目录的属组。

$ ansible db_servers -m file -a "path=/testdir/abb state=touch group=tz"
$ ansible db_servers -m file -a "path=/testdir/abb group=tz"
$ ansible db_servers -m file -a "path=/testdir/abb state=directory group=tz"

9、在创建文件或目录的时候指定权限,修改远程主机上的文件或目录的权限。

$ ansible db_servers -m file -a "path=/testdir/abb state=touch mode=0644"
$ ansible db_servers -m file -a "path=/testdir/abb mode=0644"
$ ansible db_servers -m file -a "path=/testdir/binfile mode=4700"
$ ansible db_servers -m file -a "path=/testdir/abb state=directory mode=0644"

10、当操作远程主机中的目录时,同时递归的将目录中的文件的属主属组都设置为tz。

$ ansible db_servers -m file -a "path=/testdir/abd state=directory owner=tz group=tz recurse=yes"

常用参数

  • path
    必须参数,用于指定要操作的文件或目录,使用dest或name也可以。

  • state
    可选值为touch、directory、hard、link、absent;
    配合path使用,表明创建对象是文件还是目录,或者是硬链接,软链接,或者是需要删除的文件。

  • src
    当state设置为link或者hard时,通过src参数指定链接源文件。

  • force
    当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创建链接文件,注意如果有同名文件会被强制覆盖。

  • owner
    用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。

  • group
    用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。

  • mode
    用于指定被操作文件的权限,比如,如果想要将文件权限设置为”rw-r-x—“,则可以使用mode=650进行设置,等同于使用mode=0650,如果你想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700。

  • recurse
    当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性。

参考资料:
转载于朱老师博客

posted @ 2021-06-09 11:53  努力吧阿团  阅读(99)  评论(0)    收藏  举报