ansible常用几个模块的使用。

file模块

  • path –必须参数,用于指定要操作的文件或目录。

  • state –创建目录时,state的值为directory,和path结合,创建文件时,state的值设置为touch。创建软链接文件时,state值link。想要创建硬链接文件时,state为hard。当我们想要删除一个文件或目录,则需要将state的值设置为absent。

  • src –当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。

  • force –当state=link的时候,可配合此参数强制创建链接文件。

  • owner –用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。

  • group –用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。

  • mode –用于指定被操作文件的权限,比如,如果想要将文件权限设置为”rw-r-x—“,则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的。如果想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700。

  • recurse –当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性。

copy 复制模块

参数: * src –用于指定需要copy的文件或目录。

  • dest –用于指定文件将被拷贝到远程主机的哪个目录中,dest为必须参数。

  • content –当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。

  • force –当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no。

  • backup –当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no。

  • owner –指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户,否则会报错。

  • group –指定文件拷贝到远程主机后的属组,但是远程主机上必须有对应的组,否则会报错。

  • mode –指定文件拷贝到远程主机后的权限,如果你想将权限设置为”rw-r–r–“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示。

    ansible 172.16.1.56 -m copy -a "src=/root/test.txt dest=/data backup=yes"
    
    # 不指定backup=yes的话会直接把相同文件名的文件覆盖,指定后会先备份一份再覆盖
    

script脚本模块

参数和command模块大致相同,可以执行本地脚本,把本地脚本应用到远程主机

ansible 172.16.1.56 -m script -a "chdir=/data /server/scripts/create_txt.sh"
输出>>
172.16.1.56 | SUCCESS => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 172.16.1.56 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 172.16.1.56 closed."
    ], 
    "stdout": "", 
    "stdout_lines": []
}

#执行本机/server/scripts/目录下的create_txt.sh脚本,
#该脚本内容只有一行命令`touch test2.txt`,
#在执行命令前,会切换到远程56主机的/data目录下去执行本机的脚本。