ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。以下内容为常用模块的详细整理。

批量管理模块功能

(1)shell模块 —万能模块

作用:可以实现批量管理主机信息

PS:command模块有缺陷,无法识别特殊符号信息:"$HOME" "<"  ">"  "|"  ";" "&"
模块常用指令参数:
creates: 判断一个文件是否存在,如果存在就不执行相应命令
removers:判断一个文件是否存在,如果存在就执行相应命令
chdir:	 执行命令前,进行目录一个切换

PS:
(1)万能模块在使用时缺陷,不具有幂等性(第一次执行结果和多次执行结果相同)
	当不具有幂等性时,会对剧本编写产生问题???
(2)操作步骤可能会过于繁琐

批量执行脚本功能:
第一个历程:编写脚本
第二个历程:需要将脚本文件分发给所有主机
ansible oldboy -m copy -a "src=/server/scripts/test.sh dest=/server/scripts"
第三个历程:设置脚本文件权限
ansible oldboy -m file -a "path=/server/scripts/test.sh mode=755"
第四个历程:执行脚本文件
ansible oldboy -m shell -a "/server/scripts/test.sh"

(2)script模块 —脚本模块

作用:专门批量执行脚本功能
第一个历程:编写脚本
第二个历程:批量执行脚本
ansible oldboy -m script -a "/server/scripts/test2.sh"

(3)copy模块 —分发数据模块

作用:可以实现批量分发数据文件
常用参数指令:
src:				指定要分发文件数据信息
dest:				将分发文件保存到哪个目标路径
owner:				指定文件分发后的属主信息
group:				指定文件分发后的属组信息
mode:				指定文件分发后的权限信息
backup:				当文件名称重复时,会将原文件备份,再进行覆盖
content:			在被管理主机上创建文件并设置信息内容
directory_mode:		可以递归设置目录中数据权限(只是针对复制目录时)
force:(了解)		 可以避免相同名称文件覆盖
					force=yes 默认设置 表示会覆盖
					force=no  不会对相同文件进行覆盖
remote_src:			将被管理主机上文件进行本地备份保存
validate:			验证分发后的文件合法性

实践操作:

(1)批量分发文件信息,并修改文件属主 属组 和权限信息

ansible oldboy -m copy -a "src=/data/oldboy.txt dest=/tmp/ mode=666 owner=oldboy01 group=oldboy01"

ansible批量修改MySQL数据库密码 ansible批量修改文件_数据

(2)在被管理主机上创建文件信息,并设置文件的内容

ansible oldboy -m shell -a "content=oldgirl123 dest=/tmp/oldgril.txt"

ansible批量修改MySQL数据库密码 ansible批量修改文件_数据_02

(3)将目录信息复制到被管理主机上,并且将目录以及下面所有内容权限统一改为777

ansible oldboy -m copy -a "src=/data/oldboy01 dest=/tmp/ directory_mode=777 mode=777"

利用copy模块分发目录信息时:

目录后面有 / 表示将目录下面数据内容进行整体分发

目录后面没有 / 表示将目录下面数据内容以及目录本身都做分发

ansible oldboy -m copy -a "src=/data/oldboy01/ dest=/tmp/oldboy/oldboy01/"

(4)将备份的数据进行还原

ansible oldboy -m copy -a "src=/tmp/oldboy.txt dest=/backup/oldboy.txt.bak01 remote_src=yes"  批量备份数据文件

ansible oldboy -m copy -a "src=backup/oldboy.txt.bak01 dest=/tmp/oldboy.txt remote_src=yes"  批量备份数据文件
 
ansible oldboy -m copy -a "src=/data/oldboy.txt dest=/tmp/oldboy.txt force=no"  避免进行相同文件名称覆盖

(4)fetch模块 —拉取数据模块

作用:可以将被管理主机数据进行拉取
常用指令参数:
src:  	被管理主机需要拉取数据目录
dest:	管理主机需要存储数据目录信息

实践操作:实现被管理主机文件数据拉取
ansible oldboy -m fetch -a "src=/etc/oldboy01/01.txt dest=/data"		l拉取文件信息过程

ansible批量修改MySQL数据库密码 ansible批量修改文件_服务器_03

PS:fetch文件默认无法拉取目录信息,可以利用synchronize

(也可以先利用压缩模块压缩处理后再拉取)

(5)file模块 —管理数据模块

作用:可以实现数据信息创建与删除/以及已有数据信息属性修改(属主 属组 权限)
常用指令参数:
owner:				修改已有文件的属主信息
group:				修改已有文件的属组信息
mode:				修改已有文件的权限信息
path:				 指定需要创建或者修改属性文件信息
recurse:			对指定目录下面数据内容做递归修改,默认为no
state:				可以实现数据信息创建删除

实践需求:
01.修改被管理文件数据属性信息
ansible oldboy -m file -a "path=/etc/oldboy01.tar.gz mode=644 owner=root group=root"		---对文件信息修改
ansible 172.16.1.7 -m file -a "path=/etc/oldboy01/ mode=700 owner=oldboy01 group=oldboy01"		---对目录信息修改
站点目录权限修改:chown -R apache.apache /html/www
ansible 172.16.1.7 -m file -a "path=/etc/oldboy01/ mode=700 owner=oldboy01 group=oldboy01 recurse=yes"		---递归修改目录权限属性

02.创建数据信息
目录信息:
ansible 172.16.1.7 -m file -a "path=/etc/oldgirl/ state=directory"
文件信息:
ansible 172.16.1.7 -m file -a "path=/etc/oldgirl/oldgirl state=touch"
检查文件信息是否存在:
ansible 172.16.1.7 -m file -a "path=/etc/oldgirl/oldgirl state=file"
链接文件:
软连接:
ansible 172.16.1.7 -m file -a "src=/etc/oldgirl/oldgirl.txt path=/etc/oldgirl/oldgirl_hard_link state=link"
硬链接:
ansible 172.16.1.7 -m file -a "src=/etc/oldgirl/oldgirl.txt path=/etc/oldgirl/oldgirl_hard_link state=hard"

03.删除数据信息
文件信息:ansible 172.16.1.7 -m file -a "path=/etc/oldgirl/oldgirl_hard_link state=absent"
目录信息:ansible 172.16.1.7 -m file -a "path=/etc/oldgirl state=absent"

(6)archive模块 —压缩数据模块

作用:可以对远程主机进行压缩处理
owner:				指定文件压缩后的属主信息
group:				指定文件压缩后的属组信息
mode:				指定文件压缩后的权限信息
remove(了解):		 将进行压缩后的数据删除  (删除文件数据信息)
path:				指定需要进行压缩数据信息
dest:				指定压缩包文件保存路径
format:				指定压缩数据方式	bz2	gz(默认)	tar xz zip
exclude_path:		 在压缩数据信息时进行指定数据信息排除
force_archive:		 单独压缩一个文件信息时,也可以进行强制压缩处理

实践需求:需要将远程主机/etc/oldboy01目录进行压缩处理
ansible oldboy -m archie -a "path=/etc/oldboy01 dest=/etc/oldboy01.tar.gz owner=oldboy01 group=oldboy01 mode=666 remove=yes"

(7)unarchive模块 —解压数据模块

作用说明:可以将管理端压缩包数据信息解压到被管理主机上
参数说明:
src:		指定要解压的数据信息
dest:		解压数据指定路径信息
remote_src:	将被管理主机上压缩包进行解压
ansible 172.16.1.7 -m unarchive -a "src=/data/test.tar.gz dest=/html/test"

(8)lineinfile模块 —文件信息替换模块 类似sed

作用说明:可以实现对文件信息修改操作
常用指令参数:
path:				指定要修改文件的信息
regexp:				利用正则匹配出文件中指定行信息
line:				对匹配行信息做修改
state:				可以实现删除文件信息
insertafter:		匹配指定信息,并在指定信息下面新起一行添加信息
insertafter:		匹配指定信息,并在指定信息下面新起一行添加信息
create:				在指定文件后面追加新的信息	等价于	>>

ansible批量修改MySQL数据库密码 ansible批量修改文件_linux_04

(9)cron模块 —定时任务模块

作用说明:可以批量设置定时任务信息
常用指令参数:
minute:				可以设置分钟信息
hour:				可以设置小时信息
day:				可以设置日期信息
month:				可以设置月份信息
weekday:			可以设置信息信息
special_time:		可以按照指定周期时间执行
job:				可以设置需要执行任务信息
name:				表示给定时任务添加注释
disabled			表示将指定定时任务进行注释

实践过程:
01.创建定时任务:每天夜里2点 备份数据信息
ansible oldboy -m cron -a "name='ansible-01-cron' minute=0 hour=2 job='cp /etc/hosts /etc/hosts01.bak &>/dev/null'"

02.批量删除定时任务
ansible oldboy -m cron -a "name='ansible-01-cron' state=absent"

03.临时关闭定时任务设置
ansible oldboy -m cron -a "name='ansible-01-cron' minute=0 hour=2 job='cp /etc/hosts /etc/hosts01.bak &>/dev/null' disabled=yes"

(10)mount模块 —挂载存储设备模块

作用说明:实现存储服务批量挂载已经卸载
常用指令参数:
path:		指定挂载点目录信息
src:		指定挂载存储设备信息
fstype:		指定挂载使用文件系统类型	挂载nfs	fstype=xfs
opts:		指定挂载参数信息	rw	ro	suid nosuid	auto noauto ... defaults
state:		指定挂载或卸载操作

实践操作:
01.主机批量挂载
ansible oldboy -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=present"		实现重启系统进行永久挂载
ansible oldboy -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=mounted"		实现立即挂载以及永久挂载

02.主机批量卸载存储设备
ansible oldboy -m mount -a "path=/mnt state=absent"		立即卸载并删除fstab挂载配置信息
ansible oldboy -m mount -a "path=/mnt state=unmounted"		立即卸载但不会删除fstab挂载配置信息++

(11)user模块 —管理用户组模块

作用说明:实现主机用户批量创建/批量删除用户
常用指令参数:
name:			指定创建用户名称
password:		指定创建用户密码信息 password=密文信息
uid:			指定创建用户uid数值信息
group:			指定用户所属主要组信息		   useradd -g
groups:			指定用户附属组信息			useradd -G
shell:			指定创建用户登录方式		/bin/bash(可以登录)  /sbin/nologin(不能登录)
create_home		确认是否创建家目录	默认yes创建家目录   useradd -M
remove:			确认是否删除用户家目录信息 默认no不删除家目录

ansible批量修改MySQL数据库密码 ansible批量修改文件_linux_05

ansible批量修改MySQL数据库密码 ansible批量修改文件_常用指令_06

补充:group模块 — 管理服务程序模块

作用说明:创建用户组信息或删除用户组信息
常用指令:
name:		指定用户组名称信息
gid:		指定用户组gid数值信息
state:		是否创建或删除用户组

(12)yum模块 —批量安装软件模块

作用说明:
1.下载安装/卸载删除系统软件程序包
2.可以指定下载源信息  yum仓库 <---/etc/yum.repos.d/xxx.repo 	aliyun nginx 清华源
常用指令参数介绍:
name:			指定下载软件名称信息
state:			指定下载或是卸载软件
				installed/present		下载安装软件	rsync-2.0
				adsent/removed			卸载软件程序
				latest					更新软件程序	rsync-3.0
enablerepo:		指定下载源信息
disablerepo:	指定不用那个下载源
doenload_only:	只下载软件包不进行安装

ansible批量修改MySQL数据库密码 ansible批量修改文件_常用指令_07


补充:yum_repository 模块

作用说明:利用此模块生成yum下载源文件
常用指令参数介绍:
name:			下载源仓库名称
description:	下载源仓库描述介绍信息
baseurl:		下载源仓库地址
enabled:		是否启用下载源文件

实践操作过程:
01.生成下载源文件
ansible 172.16.1.8 -m yum_repository -a "name=oldboy description='local yum' baseurl=http://192.168.200.100 enabled=yes"

(13)service模块 —管理服务程序模块

作用说明:批量管理服务状态
常用指令参数介绍:
name:			指定管理服务名称
state:			指定服务运行状态(started:启动 stopped:停止 reloaded:平滑重启)
enabled:		设置是否让服务开机自启	yes-开机自启 no-开机不让运行

实践操作过程:批量管理服务状态
ansible oldboy -m service -a "name=nginx state=stopped enabled=no"
ansible oldboy -m service -a "name=nginx state=started enabled=yes"

类似模块:systemd

(14)setup模块 —收集

作用说明:可以采集被管理主机的系统和硬件信息
常用指令参数信息:
filter:			过滤筛选想关注信息
ansible 172.16.1.7 -m setup -a "filter=ansible_eth0"
PS:利用收集的信息做判断使用