ansible(四)常用模块(fetch,copy,file)之文件操作

模块基本用法

列出ansible所支持的模块 ansible-doc -|
查看模块的详细帮助信息,比如查看fetch模块的帮助 ansible-doc -s fetch
调用模块,比如调用ping模块 ansible all -m ping
调用模块的同时传入模块所需要的参数,以fetch模块为例
ansible 172.25.0.2 -m fetch -a “src=/etc/fstab dest=/testdir/ansible/”

fetch模块详解

(1)查看fetch模块的使用
在这里插入图片描述(2)编写清单
在这里插入图片描述
(3)将目标主机的/etc/fstab发送到本机的/testdir/ansible
说明:/testdir/ansible目录不存在,会自动建立!!
在这里插入图片描述

成功在这里插入图片描述
(4)验证幂等性再次执行上述命令
在这里插入图片描述
(5)当改变fstab的内容时再次执行上述命令
在这里插入图片描述

copy模块详解

copy模块
见名知义,copy模块的作用就是拷贝文件,它与之前介绍的fetch模块类似,不过,fetch模块是从远程主机中拉取文件到ansible主机,而copy模块是将ansible主机上的文件拷贝到远程主机中

src参数用于指定需要copy的文件或目录
dest参数用于指定文件将被拷贝到远程主机的哪个目录
content参数当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错
force参数当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,果 状认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变
backup参数当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设i为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机
owner参数指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错
group参数指定文件拷贝到远程主机后的属组,但是远程主机.上必须有对应的组,否则会报错
mode参数指定文件拷贝到远程主机后的权限,如果你想将权限设置为"rw-r–r--",则可以使用mode =0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode: =u+ x表示

(1)在ansible主机和目标主机各写一个文件
说明:两个文件名相同,内容不同
在这里插入图片描述
在这里插入图片描述

(2)使用ansible会覆盖源目标主机文件的内容
在这里插入图片描述
在这里插入图片描述
(3)验证幂等性
第二次执行命令不会改变

在这里插入图片描述
(4)使用content直接指定文件内容
在这里插入图片描述
在目标主机查看
在这里插入图片描述
(5)当两个主机文件名相同内容不同时,不想被覆盖用force
在这里插入图片描述
在这里插入图片描述
(6)当两个主机文件名相同内容不同时,被覆盖时进行备份
在这里插入图片描述
在目标主机查看
在这里插入图片描述
(7)指定文件拷贝到远程主机后的属主
远程主机必须要有指定用户
在这里插入图片描述
当目标主机没有这个文件(westos)和有这个文件(copytest)的对比
文件存在时只会改变拥有者,文件不存在时会改变拥有者和时间戳!!!
在这里插入图片描述
在这里插入图片描述
在目标主机查看
在这里插入图片描述
(8)指定文件拷贝到远程主机后的属组
在这里插入图片描述
在这里插入图片描述
(9)指定文件拷贝到远程主机后的权限
在这里插入图片描述
目标主机查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

file模块详解

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

path参数:必须参数,用于指定要操作的文件或目录
state参数:此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目录的时候,我们需要使用path参数指定对应的目录路径,假设,我想要在远程主机上创建/testdir/a/b目录,那么我则需要设置ipath=/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参数:用于指定被操作文件的属主,A 属主对应的用户必须在远程主机中存在,否则会报错。
group参数:用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。
mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为"rw-r-x—”, 则可以使用mode= 650进行设置t,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限,比如为二进制文件设置isuid, 则可以使用mode=4700
recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性

(1)在目标主机建立目录然后在ansible主机创建文件
在这里插入图片描述
在这里插入图片描述
查看
在这里插入图片描述
再次执行上述命令会改变文件的时间戳!!!
在这里插入图片描述
再次查看
在这里插入图片描述
(2)创建目录
在这里插入图片描述
查看
在这里插入图片描述
再次执行没有改变
在这里插入图片描述
再次查看
在这里插入图片描述
(3)软连接
在这里插入图片描述
查看
在这里插入图片描述
(4)硬链接
在这里插入图片描述
查看
在这里插入图片描述
(5)force参数情况一
在这里插入图片描述
在这里插入图片描述
(6)删除远程主机的文件
在这里插入图片描述
查看
在这里插入图片描述
(7)创建文件属于ll
在这里插入图片描述
查看
在这里插入图片描述
当文件存在时再次执行会改变时间戳!!!
在这里插入图片描述
在这里插入图片描述
(8)创建文件属组为ll
在这里插入图片描述
查看
在这里插入图片描述
(9)创建目录属组为ll
在这里插入图片描述
查看
在这里插入图片描述

改属主
在这里插入图片描述
查看
在这里插入图片描述
(10)改权限
可以改变原来存在的文件和目录,也可改变新建的
在这里插入图片描述
查看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(11)递归创建目录
在这里插入图片描述
查看
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值