1.ansible roles简介
Ansible roles是为了层次化、结构化地组织Playbook
roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等
相当于函数的调用把各个功能切割成片段来执行
2.roles目录结构
3.ansible-galaxy命令工具
Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles
ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色
通过ansible-galaxy init xxx就可以生成相应的角色目录
可以通过官方网站以及中文权威指南学习ansible
4.创建第一个roles(apache)
目的:server1给server2和server3安装httpd服务
1)role存放的路径在配置文件/etc/ansible/ansible.cfg中定义:roles_path = /etc/ansible/roles
这里我们使用的是普通用户devops来做ansible,因此应该是roles_path = /home/devops/ansible/roles
先在ansible目录下创建roles目录
然后编辑ansible.cfg配置文件,在配置文件中声明
查看帮助
(2)列出已安装的角色,注意路径问题
(3)进入角色目录,创建apache角色,(4)进入apache角色目录,发现有任务目录、触发器目录、模板目录、变量目录等等
删除测试目录,这两个暂时没有用
(5)编写任务的yml文件
使用了template模板,因此需要将模板文件放入templates目录下面
使用的copy文件为静态文件,需要放在files目录下添加静态文件,在files目录下放入copy模块对应src文件
编写模板文件,拷贝一个过来即可,
上面手残写错了
编写触发器的yml文件注意此处触发器的名字及必须和任务里面的notify写的一致
编写最终要执行的文件
可以通过curl访问
当然我们也可以更改端口,但是需要注意的是,更改端口时有优先级。即便我们ansible目录下面的yml文件里面定义了变量端口,但是我们角色下面的vars变量里面没有改变端口,他的端口依然不会改变。
此时apache.yml中的端口生效,为8080
将/var/main.yml中的ip信息也注释
在安装apahce服务的主机上查看配置文件
物理机打开防火墙,是虚拟机可以上网
在网上下载已有的角色
同样的,在ansible目录下面,
ansible-galaxy search nginx查找nginx角色
拓展:利用ansible工具setup获取相应的主机名等等
查看db 也就是server2主机信息编写文件,获取想要的主机信息
通过ansile server -m setup | less查询
When语句
哪个主机满足条件,哪个主机就进行相应的操作,当不满足时直接跳过。