1.ansible roles简介

Ansible roles是为了层次化、结构化地组织Playbook
roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等
相当于函数的调用把各个功能切割成片段来执行

2.roles目录结构
role_name 定义的role名字
files 存放copy或script等模块调用的函数
tasks 定义各种task,要有main.yml,其他文件include包含调用
handlers 定义各种handlers,要有main.yml,其他文件include包含调用
vars 定义variables,要有main.yml,其他文件include包含调用
templates 存储由template模块调用的模板文本
meta 定义当前角色的特殊设定及其依赖关系,要有main.yml的文件
defaults 要有main.yml的文件,用于设定默认变量

3.ansible-galaxy命令工具

Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles
ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色
ansible-galaxy在 Ansible 1.4.2 就已经被包含了
在ansible galaxy网站查询roles

安装的roles默认是存放在家目录中:/root/.ansible/roles
对于的roles的快速部署,很有帮助

4.创建第一个roles(apache)

目的:server1给server2和server3安装httpd服务

(1)role存放的路径在配置文件/etc/ansible/ansible.cfg中定义:roles_path = /etc/ansible/roles

这里我们使用的是普通用户devops来做ansible,因此应该是roles_path = /home/yty/ansible/roles
先在ansible目录下创建roles目录
然后编辑ansible.cfg配置文件,在配置文件中声明
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(2)列出已安装的角色,注意路径问题
此时还没有创建角色,因此是空的
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(3)进入角色目录,创建apache角色,再次查看角色就有了
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(4)进入apache角色目录,发现有任务目录、触发器目录、模板目录、变量目录等等

删除测试目录和说明文档,这两个暂时没有用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(5)编写任务的yml文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
编写模板文件,拷贝一个过来即可,不需要修改
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
编写触发器的yml文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
编写变量的yml文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
编辑默认发布页面
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
编写最终要执行的文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
开始执行,没有报错,说明角色分离成功
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用

这就实现了apache的角色分离
也就是playbook.yml文件拆分

5.创建第二个roles(haproxy)
目的:在server1上安装haproxy服务,实现server2和server3的负载均衡

(1)创建haproxy角色,以及删除没有用的文件和目录
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(2)编写任务文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(3)编写触发器文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(4)编写模板文件,其实也就是把palybook的拷贝一份
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(5)不需要编写变量文件
(6)编写最终要执行的apache文件,因为haproxy和httpd是结合在一起的,要实现负载均衡
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
没有报错,说明成功实现了访问server1负载均衡server2和server3
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
创建第三个roles(keepalived)
目的:在server2和server3上安装httpd,在server1和server4上安装haproxy,在server1上安装keepalived,实现高可用
也就是server1和server4两个调度器之间的高可用
(1)创建角色,删除文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(2)编写任务文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(3)编写触发器文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(4)编写模板文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(5)编写主机文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(6)编写最终要执行的文件
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
(7)执行
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用

(8)测试:看是否实现了高可用

可以看到server1上具有VIP
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用

ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
在server1上停止keepalived服务,发现VIP自动漂移到了server4上面
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
仍可以访问
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用
ansible roles实现(apache+haproxy+keepalived)负载均衡+高可用

相关文章: