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

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

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)之文件操作_第7张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第8张图片

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

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

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)之文件操作_第28张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第29张图片
查看
在这里插入图片描述
再次执行上述命令会改变文件的时间戳!!!
ansible(四)常用模块(fetch,copy,file)之文件操作_第30张图片
再次查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第31张图片
(2)创建目录
ansible(四)常用模块(fetch,copy,file)之文件操作_第32张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第33张图片
再次执行没有改变
ansible(四)常用模块(fetch,copy,file)之文件操作_第34张图片
再次查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第35张图片
(3)软连接
ansible(四)常用模块(fetch,copy,file)之文件操作_第36张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第37张图片
(4)硬链接
ansible(四)常用模块(fetch,copy,file)之文件操作_第38张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第39张图片
(5)force参数情况一
ansible(四)常用模块(fetch,copy,file)之文件操作_第40张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第41张图片
(6)删除远程主机的文件
ansible(四)常用模块(fetch,copy,file)之文件操作_第42张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第43张图片
(7)创建文件属于ll
ansible(四)常用模块(fetch,copy,file)之文件操作_第44张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第45张图片
当文件存在时再次执行会改变时间戳!!!
ansible(四)常用模块(fetch,copy,file)之文件操作_第46张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第47张图片
(8)创建文件属组为ll
ansible(四)常用模块(fetch,copy,file)之文件操作_第48张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第49张图片
(9)创建目录属组为ll
ansible(四)常用模块(fetch,copy,file)之文件操作_第50张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第51张图片

改属主
ansible(四)常用模块(fetch,copy,file)之文件操作_第52张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第53张图片
(10)改权限
可以改变原来存在的文件和目录,也可改变新建的
ansible(四)常用模块(fetch,copy,file)之文件操作_第54张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第55张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第56张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第57张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第58张图片
ansible(四)常用模块(fetch,copy,file)之文件操作_第59张图片

(11)递归创建目录
ansible(四)常用模块(fetch,copy,file)之文件操作_第60张图片
查看
ansible(四)常用模块(fetch,copy,file)之文件操作_第61张图片

你可能感兴趣的:(企业运维)