文章目录
- 1.ansible
- 1.概念
- 2.工作原理
- 3.安装ansible
- 2.playbook
- 1.组件
- 2.角色详解
- 3.剧本语法
- 3.1基本语法
- 3.2常用字段
- 3.3 选项
1.ansible
1.概念
ansible是一个可以服务端控制其他机器完成工作的一个应用工具,
1.服务没有客户端存在,通过模块对节点服务器进行控制
2.模块具有幂等性,重复的操作不会报错
3.能够批量配置、部署、管理上千台主机
2.工作原理
user发送的playbook会被拆分成逐个task,然后各个模块会识别task并且通过远程ssh调度进行操作
3.安装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.playbook
1.组件
2.角色详解
在配置文件:/etc/ansible/hosts总定义角色组
#自定义组
[mysql]
#选择所有组
all
#组合组(多个组在一起)
[组集合名:child]
#设置组变量
[组名:vars]
3.剧本语法
3.1基本语法
大小写敏感、大小写不同则含义不同
缩进敏感、用缩进表示层级关系
缩进不允许用tab键、只能识别空格
文本中空格的数量不重要,只要左侧对齐,则层级相同
3.2常用字段
remote-user:用什么身份登录
tasks:子条目编写角色将要执行的任务
become:yes:表示切换用户执行
become_user:用户:切换为对应用户进行执行
– name:定义下方操作的名称(方便维护)
3.3 选项
1.when条件判断
类似if true 进行执行
2.迭代
Ansible提供了很多种循环结构,一般都命名为with_items,等同于循环
3.Templates 模块
Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件用来产生目标文本,传递Python的变量给模板去替换模板中的标记。
4.tags 模块
可以在一个playbook中为某个或某些任务定义“标签”
always(一直执行)
其他标签都是你可以指定之后进行执行
5.Roles 模块
Ansible为了层次化、结构化地组织Playbook,使用了角色(roles),roles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。