一、概述
1.1 ansible简介
- 服务没有客户端存在,通过模块对节点服务器进行控制
- 模块具有幂等性,重复的操作不会报错
- 能够批量配置、部署、管理上千台主机
1.2 ansible安装
- 仅需在控制主机安装ansible服务即可(本质是通过ssh进行连接控制)
#安装epel源 yum install -y epel-release #安装ansible服务 yum install -y ansible #编辑主机清单配置 vim /etc/ansible/hosts #生成非对称秘钥 ssh-keygen -t rsa #传输给节点主机,实现免密登陆 ssh-copy-id root@IP
二、剧本
2.1 剧本组件
组件 | 释义 |
tasks | 任务 |
variables | 变量 |
templates | 模块(核心) |
handlers | 处理器 |
roles | 角色 |
2.2 角色详解
在配置文件:/etc/ansible/hosts总定义角色组 #自定义组 [mysql] #选择所有组 all #组合组(多个组在一起) [组集合名:child] #设置组变量 [组名:vars]
2.3 剧本语法
2.3.1 基本语法
- 大小写敏感、大小写不同则含义不同
- 缩进敏感、用缩进表示层级关系
- 缩进不允许用tab键、只能识别空格
- 文本中空格的数量不重要,只要左侧对齐,则层级相同
2.3.2 常用字段
- remote-user:用什么身份登录
- tasks:子条目编写角色将要执行的任务
- become:yes:表示切换用户执行
- become_user:用户:切换为对应用户进行执行
- – name:定义下方操作的名称(方便维护)
2.3.4 常用模块
模块 | 释义 |
command:命令模块 | 执行后方的Linux命令 |
cron:周期任务模块 | 定义周期性执行任务(相当于crontab -e) |
user:用户模块 | 创建/删除用户 |
group:组模块 | 创建/删除组 |
copy:复制模块 | 将本机文件复制到其他机器 |
file:文件模块 | 对文件进行增删操作 |
ping:ping模块 | 检测机器是否正常通信 |
service:服务模块 | 配置其他机器是否开机自启等 |
yum:yum模块 | 控制机器通过yum安装服务 |
shell:脚本模块 | 控制机器使用shell脚本(非幂等性操作) |
三、思维导图