ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。以下内容为常用模块的详细整理。
批量管理模块功能
(1)shell模块 —万能模块
作用:可以实现批量管理主机信息PS:command模块有缺陷,无法识别特殊符号信息:"$HOME" "<"">""|"";
" "&"
模块常用指令参数:
creates: 判断一个文件是否存在,如果存在就不执行相应命令
removers:判断一个文件是否存在,如果存在就执行相应命令
chdir:执行命令前,进行目录一个切换PS:
(1)万能模块在使用时缺陷,不具有幂等性(第一次执行结果和多次执行结果相同)
当不具有幂等性时,会对剧本编写产生问题???
(2)操作步骤可能会过于繁琐批量执行脚本功能:
第一个历程:编写脚本
第二个历程:需要将脚本文件分发给所有主机
ansible oldboy -m copy -a "src=https://www.it610.com/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=https://www.it610.com/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=https://www.it610.com/data/oldboy01 dest=/tmp/ directory_mode=777 mode=777"
利用copy模块分发目录信息时:
目录后面有 / 表示将目录下面数据内容进行整体分发
目录后面没有 / 表示将目录下面数据内容以及目录本身都做分发
ansible oldboy -m copy -a "src=https://www.it610.com/data/oldboy01/ dest=/tmp/oldboy/oldboy01/"
(4)将备份的数据进行还原
ansible oldboy -m copy -a "src=https://www.it610.com/tmp/oldboy.txt dest=/backup/oldboy.txt.bak01 remote_src=yes"批量备份数据文件ansible oldboy -m copy -a "src=https://www.it610.com/article/backup/oldboy.txt.bak01 dest=/tmp/oldboy.txt remote_src=yes"批量备份数据文件
ansible oldboy -m copy -a "src=https://www.it610.com/data/oldboy.txt dest=/tmp/oldboy.txt force=no"避免进行相同文件名称覆盖
(4)fetch模块 —拉取数据模块
作用:可以将被管理主机数据进行拉取
常用指令参数:
src:被管理主机需要拉取数据目录
dest: 管理主机需要存储数据目录信息实践操作:实现被管理主机文件数据拉取
ansible oldboy -m fetch -a "src=https://www.it610.com/etc/oldboy01/01.txt dest=/data"l拉取文件信息过程
【服务器架构|ansible常用模块详细整理(批量管理模块功能)】
文章图片
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=https://www.it610.com/etc/oldgirl/oldgirl.txt path=/etc/oldgirl/oldgirl_hard_link state=link"
硬链接:
ansible 172.16.1.7 -m file -a "src=https://www.it610.com/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=https://www.it610.com/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=https://www.it610.com/article/172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=present"实现重启系统进行永久挂载
ansible oldboy -m mount -a "src=https://www.it610.com/article/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.repoaliyun 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:利用收集的信息做判断使用
推荐阅读
- Linux|Linux的I/O复用接口select和epoll
- 服务器架构|监控软件自动发现功能和监控软件分布式监控配置
- 服务器架构|监控服务架构组成详解和实现监控方法
- 服务器架构|监控服务大总结(外加借助grafana软件出图)
- 在android studio上设置bitnami Parse服务器的电子邮件验证
- 如何在Ubuntu 16.04中使用命令行CLI安装ClamAV并扫描病毒
- 如何安装和使用Exa,这是Ubuntu 16.04中ls命令的现代替代品
- 如何使用CLI检查Ubuntu Server 16.04中的系统规格
- 如何在Ubuntu 16.04中实现软件RAID 1阵列(镜像)