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"
(2)在被管理主机上创建文件信息,并设置文件的内容
ansible oldboy -m shell -a "content=oldgirl123 dest=/tmp/oldgril.txt"
(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拉取文件信息过程
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: 在指定文件后面追加新的信息 等价于 >>
(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不删除家目录
补充: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: 只下载软件包不进行安装
补充: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:利用收集的信息做判断使用