ansbile-----------------------01. 批理管理基础模块(moudle)
为什么使用Ansible批理管理工具?
- 批量管理多台主机
- 提高运维工作效率
- 降低运维工作难度(rsync nfs Tomcat nginx)
------------------------------------------------------------------------------------------------------------
command 模块: 在远程主机上执行命令操作 默认模块
shell 模块: 在远程主机上执行命令操作 万能模块
PS: 有时剧本不能反复执行!!!
script 模块: 批量执行本地脚本
copy 模块: 用于批量分发传输数据信息
fetch 模块: 用于将远程主机数据进行拉取到本地管理主机
file 模块: 修改数据属性信息/创建数据信息
yum 模块: 用于安装和卸载软件包
service 模块: 用于管理服务的运行状态
user 模块: 用于批量创建用户并设置密码信息
mount 模块: 用于批量挂载操作
cron 模块: 批量部署定时任务信息
ping 模块: 远程管理测试模块
------------------------------------------------------------------------------------------------------------------------------
补充说明:ansbile 软件输入出颜色说明:
01. 绿色信息: 查看主机信息/对主机未做改动
02. 黄色信息: 执行成功信息 (对主机数据信息做了修改)
03. 红色信息:命令执行出错了
04. 粉色信息: 警告信息
05. 蓝色信息: 显示ansible 命令执行过程的信息
command 模块: 在远程主机上执行命令操作 默认模块
ansible [主机组|主机] -m [模块] -a [执行动作]
ansible redis -a "hostname" #-m command 可以省略
shell 模块: 在远程主机上执行命令操作 万能模块
ansible redis -m shell -a "ps -ef | grep nginx"
script 模块: 批量在远程主机上执行Ansiable_Manager脚本
ansible redis -m script -a "/root/htop.sh"
copy 模块: 用于批量分发传输数据信息
ansible redis -m copy -a "src=/root/Python-3.6.1.tgz dest=/tmp/" #扩展用法 #01.在传输入文件时修改文件的权限信息 ansible redis -m copy -a "src=/root/Python-3.6.1.tgz dest=/tmp/ mode=777" #02.传输数据文件时修改文件的属主信息 ansible redis -m copy -a "src=/root/Python-3.6.1.tgz dest=/tmp/ owner=mysql group=mysql" #03.在传输数据文件信息时对远程主机源文件进行备份 ansible redis -m copy -a "src=/root/mysql_install.sh dest=/tmp/ mode=666 backup=yes" #04.创建一个文件并直接编辑文件的信息 ansible redis -m copy -a "content='happyboy' dest=/tmp/lyh.txt" #0.5 是不否远程主机上查找文件 #remote_src图1 ansible redis -m copy -a "src=/root/mysql_install.sh dest=/tmp/ mode=666 remote_src=yes"

图1
192.168.122.152 | CHANGED => { --- 对哪台主机进行操作
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true, --- 是否对主机信息进行改变
"checksum": "6e91434cf22414af8240dfa1bf8ab2d043b04998", --- 生成一个文件校验码==MD5加密码
"dest": "/tmp/Python-3.6.1.tgz", --- 显示 目标路径信息
"gid": 0, --- 显示 目标路径信息
"group": "root", --- 显示复制后文件属组信息
"md5sum": "2d0fc9f3a5940707590e07f03ecb08b9", --- 生成一个文件校验码==MD5加密码
"mode": "0644", --- 显示复制后文件权限信息
"owner": "root", --- 显示复制后文件权限信息
"size": 22540566, --- 显示复制文件大小信息
"src": "/root/.ansible/tmp/ansible-tmp-1572676097.45-33154796349235/source",
"state": "file", --- 显示复制文件类型
"uid": 0 --- 显示复制文件类型
}
src: 源目录
dest:目标路径(远程主机)
fetch 模块: 用于将远程主机数据进行拉取到本地管理主机
ansible 软件copy模块复制目录信息
ansible redis -m copy -a "src=/root/Python-3.6.1 dest=/tmp/"
src后面目录没有/:将目录本身及目录以下的内容都进行远程传输复制
ansible redis -m copy -a "src=/root/Python-3.6.1/ dest=/tmp/"
src后面目录没有/:将目录以下的内容都进行远程传输复制
file 模块: 修改数据属性信息/创建数据信息
file -Sets attributes Of files
设置文件属性信息
基本用法:
ansible redis -m file -a "dest=/etc/hosts owner=daemon group=daemon mode=666"
扩展用法:
1.可以利用模块创建数据信息(文件 目录 链接文件)
state 参数
=directory --- 创建一个目录信息
ansible redis -m file -a "dest=/cybermax state=directory" 一级目录 ansible redis -m file -a "dest=/opt/cybermax/shiroserver-7080 state=directory" 多级目录
=touch --- 创建一个文件信息
ansible redis -m file -a "dest=/opt/cybermax/shiroserver-7080/jfabiz.profiles state=touch"
=file --- 检查创建的数据信息是否存在,绿色存在 红色不存在
=hard --- 创建一个硬链接文件
ansible redis -m file -a "src=/opt/cybermax/shiroserver-7080/jfabiz.profiles dest=/opt/cybermax/jfabiz.profiles state=hard"
=link --- 创建一个软链接文件
ansible redis -m file -a "src=/opt/cybermax/shiroserver-7080/jfabiz.profiles dest=/opt/cybermax/jfabiz state=link"
=absent --- 缺席/删除数据信息
ansible redis -m file -a "dest=/opt/cybermax state=absent"
=recurse --- 递归传递文件及目录权限
ansible redis -m file -a "dest=/opt/cybermax mode=644 recurse=yes"
fetch 模块: 用于将远程主机数据进行拉取到本地管理主机
ansible redis -m fetch -a "src=/opt/cybermax/02.txt dest=/tmp validate_checksum=no"

# validate_checksum=no 拉取实时日志logs 不校验MD5,否报 "msg": "checksum mismatch",错误"

src:远程主机上目录
dest: Ansible 主机上
yum 模块: 用于安装和卸载软件包
yum 模块
- name = 软件名称(htop iotop iftop)
- state
# -install(软件安装)
=present
=installed
ansible redis -m yum -a "name=iotop state=installed"
=latest
# -remove(软件安装)
=absent
=removed
ansible redis -m yum -a "name=iotop state=removed"
service 模块: 用于管理服务的运行状态
service 模块
- name = 软件名称(htop iotop iftop)
- enabled=yes/no(是否开机自启)
- state
# 服务管理
=started -----启动服务
ansible redis -m service -a "name=nfs state=stopped" enabled=yes #开启自启
=stopped -----停止服务
ansible redis -m service -a "name=nfs state=stopped"
=restarted -----重启服务
=reloaded -----加载服务
user 模块: 用于批量创建用户并设置密码信息
- name 用户账号(id $name)
-group 主组
-uid
-groups 从组
-create_home=yes/no
-shell=/sbin/nologin
-password=123456 正常明文--->加密
基本用法: ansible 172.16.1.31 -m user -a "name=happyboy01” 扩展用法: 1)指定用户uid信息 ansible 172.16.1.31 -m user -a "'name=happyboy01 uid=6666" 2)指定用户组信息 ansible 172.16.1.31 -m user -a "name=happyboy03 group=happyboy01 dboy02" ansible 172.16.1.31 -m user -a "name=happyboy04 groups=happyboy03" 3)批量创建虚拟用户 ansible 172.16.1.31 -m user -a "name=rsync create home no shel1=/sbin/nologin" 4)给指定用户创建密码
PS:利用ansib1e程序user模块设置用户密码信息,需要将密码明文信息转换为密文信息进行设置 生成密文密码信息方法:
方法一:
ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"
方法:
cron 模块: 批量部署定时任务信息
crontab -e
* * * * * 定时任务动作
分 时 天 月 周
minute:
hour:
day:
mouth:
weekday:
job: -- 定时任务
ansible redis -m cron -a "minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >dev/null 2>&1'"
扩展用法:
01. 给定时任务设置注释信息
ansible redis -m cron -a "name='cybermax backup' minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >dev/null 2>&1'"
02.删除定任务
ansible redis -m cron -a "name='cybermax backup' state=absent"
03. 如何批量注释定时任务
ansible redis -m cron -a "name='cybermax backup' minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >dev/null 2>&1' disabled=yes"
mount 模块: 用于批量挂载操作
mount 模块: 用于批量挂载操作
- src: 需要挂载的存储或文件信息
- path: 指定目标挂载目录
- fstype: 需要指定挂载的文件系统类型
- state
- present/mounted ---进行挂载
- present: 不会实现立即挂载,修改/etc/fstab文件 ,实际开机自动挂载
ansible redis -m mount -a "src=192.168.122.145:/data path=/mnt fstype=nfs state=present"
![]()
- mounted(常用): 会实现立即挂载,并且会修改fstab文件
ansible redis -m mount -a "src=192.168.122.145:/data path=/mnt fstype=nfs state=mounted"
![]()
absent/umounted
- absent: 会实现立即卸载,并且会修改fstab文件
ansible redis -m mount -a "src=192.168.122.145:/data path=/mnt fstype=nfs state=absent"
![]()
- umounted(常用) df -h 立即卸载并不会删除fstab文件
ansible redis -m mount -a "src=192.168.122.145:/data path=/mnt fstype=nfs state=unmounted"
![]()





浙公网安备 33010602011771号