一、Ansible roles
1. Ansible roles的介绍
Ansible roles是为了层次化、结构化地组织Playbook。roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高。以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割成片段来执行。
2. Ansible roles中各部分的介绍
- files:存放copy或script等模块调用的函数
- tasks:定义各种任务task,需要执行的动作
- handlers:定义各种触发器handlers
- vars:定义变量variables
- templates:存储由template模块调用的模板文本,一般放置配置文件当作一个服务的>模板
- meta:定义当前角色的特殊设定及其依赖关系,要有main.yml的文件
- defaults:用于设定默认变量
3. ansible-galsxy命令
Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles。ansible-galaxy在 Ansible 1.4.2 就已经被包含了。
二、Ansible搭建高可用和负载均衡集群(keepalive+http+haproxy)
1. 创建角色
cd /home/devops/ansible
mkdir roles
ansible-galaxy init apache #初始化角色
ansible-galaxy init haproxy
ansible-galaxy init keepalive
rm -fr README.md tests #进入角色目录删除测试目录
2. 编写规则文件roles的默认路径
vim /home/devops/ansible.cfg
[defaults]
inventory = ./inventory #管理用户的清单,其中包括用户和用户组
roles_path = ./roles #存放角色规则的路径
[privilege_escalation] #默认在执行时转化为root用户
become=True
become_method=sudo
become_user=root
become_ask_pass=False
3. 编辑用户清单(用户和用户组)
vim /home/devops/ansible/inventory
[lb]
server1 STATE=MASTER VRID=5 PRIORITY=100
server4 STATE=BACKUP VRID=5 PRIORITY=50
[test]
server2
[prod]
server3
[webserver:children]
test
prod
4. 编辑apache角色目录下的文件
(1)修改任务目录tasks中的main.yml文件,添加需要执行的动作