服务器架构|ansible常用模块详细整理(批量管理模块功能)

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"

服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片

(2)在被管理主机上创建文件信息,并设置文件的内容
ansible oldboy -m shell -a "content=oldgirl123 dest=/tmp/oldgril.txt"

服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片

(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常用模块详细整理(批量管理模块功能)】服务器架构|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:在指定文件后面追加新的信息 等价于 >>

服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片

(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不删除家目录

服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片
服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片
补充: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: 只下载软件包不进行安装

服务器架构|ansible常用模块详细整理(批量管理模块功能)
文章图片

补充: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:利用收集的信息做判断使用

    推荐阅读