一、fetch模块
作用: 从受管主机中拉取文件
参数: ansible-doc -s fetch
查看一下fetch模块的参数`
命令行使用:
ansible testA -m fetch -a "src=/etc/fstab dest=/testdir/ansible/"
playbook使用:
---
- name: how to use fetch
hosts: A
tasks:
- name: task1
fetch:
src:/etc/fstab
dest:/testdir/ansible/
二、copy模块
作用:copy模块的作用就是拷贝文件,它与之前介绍的fetch模块类似,不过,fetch模块是从远程主机中拉取文件到ansible主机,而copy模块是将ansible主机上的文件拷贝到远程主机中。
参数:ansible-doc -scopy
查看一下fetch模块的参数`
src参数 用于指定需要copy的文件或目录
dest参数 用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数
content参数 当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
force参数 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup参数 当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
owner参数 指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。
group参数 指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。
mode参数 指定文件拷贝到远程主机后的权限,如果你想将权限设置为"rw-r–r--",则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。
命令行使用:
ansible testA -m copy -a "src=/etc/fstab dest=/testdir/ansible/"拷贝文件到受管主机
ansible testB -m copy -a 'content="aaa\nbbb\n" dest=/opt/test'把指定内容写入受管主机指定文件
playbook使用:
---
- name: how to use copy
hosts: A
tasks:
- name: task1
copy:
src:/etc/fstab
dest:/testdir/ansible/
owner:root
group:root
mode: 0644
三、file模块
作用:file模块可以帮助我们完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目录、修改文件权限等
参数:ansible-doc -s file
查看一下fetch模块的参数`
path参数 必须参数,用于指定要操作的文件或目录。
recurse参数 当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性。
state参数
当我们想要创建的/testdir/a/b是一个目录时,需要将state的值设置为directory,
当我们想要操作的/testdir/a/b是一个文件时,则需要将state的值设置为touch,
当我们想要创建软链接文件时,需将state设置为link,
想要创建硬链接文件时,需要将state设置为hard,
当我们想要删除一个文件时,则需要将state的值设置为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,很方便吧。
setpye参数 临时设置安全上下午
命令行使用:
ansible testB -m file -a "path=/testdir/westos state=touch"在testB(server3)主机上创建一个名为westos的文件,
ansible testB -m file -a "path=/testdir/westosdir state=directory"在testB(server3)主机上创建一个名为westosdir的目录,
ansible testB -m file -a "path=/testdir/linkwestos state=link src=/testdir/westos"在testB(server3)上为westos文件创建软链接文件,软链接名为linkwestos
ansible testB -m file -a "path=/testdir/linkwestos state=absent"删除远程机器上的指定文件或目录
ansible testB -m file -a "path=/testdir/1/2 state=directory owner=cl group=cl recurse=yes"当操作远程主机中的目录时,同时递归的创建目录并将目录中的文件的属主属组都设置为cl。
playbook使用:
---
- name: how to use copy
hosts: A
tasks:
- name: task1
file:
path:/testdir/1/2
owner:root
group:root
mode: 0644
state: touch
- name: task2
file:
path:/testdir/1/2
setype:samba_share_t 临时设置安全上下文