一、主机连通性测试

# ansible web1 -m ping

ansible输出颜色信息
绿色:执行成功并且没有对远程主机做任何改变
黄色:执行成功并对远程主机做改变
红色:执行失败
紫色:提示

二、command 模块

这个模块可以直接在远程主机上执行命令,并将结果返回本主机。

# ansible web1 -m command -a "ls /tmp"                         //返回的结果是黄色,是因为文件属性发生了改变stat test.txt

# ansible web1 -m command -a "ls /tmp | grep test" 
缺陷:不支持管道操作,使用shell模块更好

三、shell模块

很简单,直接在后面接linux命令就可以

# ansible web1 -m shell -a "ls /tmp | grep test"    

四、copy模块(scp命令)

这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。

`src`                  #被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制,用法类似于"rsync"
`content`                #用于替换"src",可以直接指定文件的值
`dest`                   #必选项,将源文件复制到的远程主机的**绝对路径**
`backup`                 #当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息
`directory_mode`      #递归设定目录的权限,默认为系统默认权限
`force`                #当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"
`others`              #所有的 file 模块中的选项可以在这里使用

举例:

# vim a.txt
host: master
IP: 192.168.58.100

指定文件拷贝:
# ansible web1 -m copy -a "src=/root/a.txt dest=/root"
指定文件拷贝,内容不同会把之前的文件进行备份:
# ansible web1 -m copy -a "src=/root/a.txt dest=/root backup=yes"
指定文件内容:
# ansible web1 -m copy -a "content=IP:192.168.58.100 dest=/root/aa.txt"
不会强制覆盖,文件不存在才复制:
# ansible web1 -m copy -a "content=IP:192.168.58.120 dest=/root/aa.txt force=no"
可以指定文件权限、主、组:
# ansible web1 -m copy -a "content=IP:192.168.58.100 dest=/root/aa.txt mode=600 group=wsl owner=wsl"
使用shell模块查看变化:
# ansible web1 -m shell -a "cat /root/a.txt"

五、file 模块

该模块主要用于设置文件的属性,比如创建文件、创建链接文件、删除文件等。

`force`       #需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
`group`  #定义文件/目录的属组。后面可以加上`mode`:定义文件/目录的权限
`owner`  #定义文件/目录的属主。后面必须跟上`path`:定义文件/目录的路径
`path`          #软链接时: 链接文件。 创建文件、目录是指定的路径[必须]
`src`             #链接时指定的源文件
`state`    #状态,有以下选项:
​    `directory`:    #如果目录不存在,就创建目录
​    `file`:              #即使文件不存在,也不会被创建
​    `link`:             #创建软链接     ln -s src path
​    `hard`:            #创建硬链接
​    `touch`:          #如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
​    `absent`:         #删除目录、文件或者取消链接文件

举例:

1、文件

创建文件:
# ansible web -m file -a 'path=/tmp/a.txt state=touch'
创建文件并修改属性:
# ansible web -m file -a 'path=/tmp/b.txt state=touch owner=wsl group=wsl mode=600'
删除文件:
# ansible web -m file -a 'path=/tmp/b.txt state=absent'

2、目录

创建目录:
# ansible web -m file -a 'path=/tmp/dir1 state=directory'
创建联级目录:
# ansible web -m file -a 'path=/tmp/dir1/dir2/dir3 state=directory'
删除目录:
# ansible web -m file -a 'path=/tmp/dir1 state=absent'

3、链接

创建软链接:
# ansible web1 -m file -a 'src=/tmp/a.txt path=/tmp/b.txt state=link'
创建硬链接:
# ansible web1 -m file -a 'src=/tmp/a.txt path=/tmp/c.txt state=hard'
删除链接:
# ansible web1 -m file -a 'path=/tmp/b.txt state=absent'
# ansible web1 -m file -a 'path=/tmp/c.txt state=absent'