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模块的使用
ansible(四)常用模块(fetch,copy,file)之文件操作(2)编写清单
ansible(四)常用模块(fetch,copy,file)之文件操作
(3)将目标主机的/etc/fstab发送到本机的/testdir/ansible
说明:/testdir/ansible目录不存在,会自动建立!!
ansible(四)常用模块(fetch,copy,file)之文件操作

成功ansible(四)常用模块(fetch,copy,file)之文件操作
(4)验证幂等性再次执行上述命令
ansible(四)常用模块(fetch,copy,file)之文件操作
(5)当改变fstab的内容时再次执行上述命令
ansible(四)常用模块(fetch,copy,file)之文件操作

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主机和目标主机各写一个文件
说明:两个文件名相同,内容不同
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作

(2)使用ansible会覆盖源目标主机文件的内容
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
(3)验证幂等性
第二次执行命令不会改变

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

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主机创建文件
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
再次执行上述命令会改变文件的时间戳!!!
ansible(四)常用模块(fetch,copy,file)之文件操作
再次查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(2)创建目录
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
再次执行没有改变
ansible(四)常用模块(fetch,copy,file)之文件操作
再次查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(3)软连接
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(4)硬链接
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(5)force参数情况一
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
(6)删除远程主机的文件
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(7)创建文件属于ll
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
当文件存在时再次执行会改变时间戳!!!
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
(8)创建文件属组为ll
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(9)创建目录属组为ll
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作

改属主
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
(10)改权限
可以改变原来存在的文件和目录,也可改变新建的
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作
ansible(四)常用模块(fetch,copy,file)之文件操作

(11)递归创建目录
ansible(四)常用模块(fetch,copy,file)之文件操作
查看
ansible(四)常用模块(fetch,copy,file)之文件操作