自动化运维工具——Ansible(七)——文件操作之file模块

1. file模块介绍

file模块可以帮助我们完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目录、修改文件权限等

2. 常用参数

此处我们介绍一些file模块的常用参数,然后再给出对应示例。

  • path参数 :必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以。
  • state参数 :此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目录的时候,我们需要使用path参数指定对应的目录路径,假设,我想要在远程主机上创建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们无法从”/testdir/a/b”这个路径看出b是一个文件还是一个目录,ansible也同样无法单单从一个字符串就知道你要创建文件还是目录,所以,我们需要通过state参数进行说明,当我们想要创建的/testdir/a/b是一个目录时,需要将state的值设置为directory,”directory”为目录之意,当它与path结合,ansible就能知道我们要操作的目标是一个目录,同理,当我们想要操作的/testdir/a/b是一个文件时,则需要将state的值设置为touch,当我们想要创建软链接文件时,需将state设置为link,想要创建硬链接文件时,需要将state设置为hard,当我们想要删除一个文件时(删除时不用区分目标是文件、目录、还是链接),则需要将state的值设置为absent,”absent”为缺席之意,当我们想让操作的目标”缺席”时,就表示我们想要删除目标。
  • src参数 :当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。
  • force参数 : 当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创建链接文件,不过强制创建链接文件分为两种情况,情况一:当你要创建的链接文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,会将同名文件覆盖为链接文件,相当于删除同名文件,创建链接文件。情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。
  • owner参数 :用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。
  • group参数 :用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。
  • mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为”rw-r-x—“,则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700,很方便吧。
  • recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性。

3. 使用示例

3.1 示例一

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

#server4中
mkdir /testdir
cd /testdir/

在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/testfile state=touch"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

再次执行:

如果testfile文件已经存在,则会更新文件的时间戳,与touch命令的作用相同
在这里插入图片描述

在这里插入图片描述

3.2 示例二

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

#server1中
ansible testB -m file -a "path=/testdir/testdir state=directory"  

在这里插入图片描述
server4中查看:
在这里插入图片描述

再次执行:

如果testdir目录已经存在,则不进行任何操作。
在这里插入图片描述

3.3 示例三

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

#server1中
ansible testB -m file -a "path=/testdir/linkfile state=link src=/testdir/testfile"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

3.4 示例四

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

#server1中
ansible testB -m file -a "path=/testdir/hardfile state=hard src=/testdir/testfile"  

在这里插入图片描述server4中查看:
在这里插入图片描述

3.5 示例五

在创建链接文件时,如果源文件不存在,或者链接文件与其他文件同名时,强制覆盖同名文件或者创建链接文件,参考上述force参数的解释。

#server1中
ansible testB -m file -a "path=/testdir/linkfile state=link src=sourcefile force=yes"  

在这里插入图片描述
server4中查看:
在这里插入图片描述

3.6 示例六

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

#server1中
ansible testB -m file -a "path=/testdir/testdir state=absent"  

在这里插入图片描述
server4中查看:
在这里插入图片描述

3.7 示例七

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

touch命令会修改时间戳

#server1中
ansible testB -m file -a "path=/testdir/abc state=touch owner=kaiser"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/abc owner=kaiser"  

在这里插入图片描述
server4中查看:

在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/aaa state=directory owner=kaiser"

在这里插入图片描述

server4中查看:
在这里插入图片描述

3.8 示例八

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

#server1中
ansible testB -m file -a "path=/testdir/abb state=touch group=kaiser"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/abb group=kaiser"  

在这里插入图片描述
server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/bbb state=directory group=kaiser"  

在这里插入图片描述
server4中查看:
在这里插入图片描述

3.9 示例九

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

#server1中
ansible testB -m file -a "path=/testdir/abb state=touch mode=0666"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/abb mode=0666"  

在这里插入图片描述server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/abb mode=4700"  

在这里插入图片描述

server4中查看:
在这里插入图片描述

#server1中
ansible testB -m file -a "path=/testdir/abb state=directory mode=0644"  

server4中查看:

在这里插入图片描述

3.10 示例十

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

#server1中
ansible testB -m file -a "path=/testdir/123/321 state=directory owner=kaiser group=kaiser recurse=yes"  

在这里插入图片描述

server4中查看:

在这里插入图片描述

发布了190 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45775963/article/details/105123082
今日推荐