一、简述ansible架构与常用模块
2.1Command模块
功能:在远程主机执行命令,此为默认模块,可忽略-m选项
作用:执行系统命令(linux windows),不支持变量,"<",">","|",";","&"等符号
这个批量处理设备相同操作很方便!注意颜色!
2.2Shell模块
shell模块增强版Command模块
功能:执行复杂的命令
2.3 script模块
功能:作用:将本地脚本复制到远程主机,并执行。(不需要给脚本添加执行权限)
2.4copy模块
拷贝, 修改文件或目录, 修改已经存在的目录的权限
使用content可以直接在远端创建文件,同时指定文件内容
使用backup=yes备份配置文件,可以实现配置文件的修改或回滚
该模块可以直接拷贝链接
[root@m01 ~]# ansible-doc copy #查看copy模块用法
src: #源文件或目录,要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync(#)。(src为空目录是时候是不会拷贝的,一致显示绿色)
content:用于替代"src",可以在命令行直接设定指定文件的值
dest: #目标目录
owner: foo #属主
group: foo #属组(不能使用gid指定)
mode: '0644' #权限,数字(3位|4位),字母,UGO
backup: yes #当出现同名的文件,直接覆盖,因为默认是no,指定yes后(文件内容不同会以当前时间戳备份该文件)
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes(force=no和state=backup可以二选一)
remote_src:
yes #受控端自己玩(可以做批量回滚)
no #默认
#远程批量拷贝,相当于scp,rsync
目标目录下文件存在的话会报错,被控端主机用户不存在会报错(但是它把能做的都做了)
2.5.fetch模块
与copy相反,copy是把本机文件发到所有node节点,用fetch可以比如从node节点抓取日志信息
只能抓取单个文件,抓多个需要把那些文件打包再抓
2.6file模块
功能:创建文件或目录,修改已经存在的目录的权限,创建软硬连接
file:
path: /etc/foo.conf #指定创建的目录或文件
state:
touch #创建文件
directory #创建目录
absent #删除目录或文件
link #做软链接
owner: foo #属主
group: foo #属组
mode: '0644' #权限
recurse #递归
1 force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
2 group:定义文件/目录的属组
3 mode:定义文件/目录的权限( 1.一次创建多个目录的时候才会递归授权, 2.recurse=yes也会递归授权)
4 owner:定义文件/目录的属主
5 path:必选项,定义文件/目录的路径(不存在的话可以直接创建)#
6 recurse:'递归