1简单的介绍role

  • ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook
  • roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。
  • 简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中

2Ansible Roles目录编排

ansible-role角色:通过一个批量部署nginx范例学习role_第1张图片

  • 一个完整role的目录结构

ansible-role角色:通过一个批量部署nginx范例学习role_第2张图片

  • 相对应的执行顺序

ansible-role角色:通过一个批量部署nginx范例学习role_第3张图片

  • 启动文件

ansible-role角色:通过一个批量部署nginx范例学习role_第4张图片

  • 每个文件夹下都有一个main.yml文件,这是每个模块目录必须有的

ansible-role角色:通过一个批量部署nginx范例学习role_第5张图片

范例的执行顺序详解

  • 1创建组

ansible-role角色:通过一个批量部署nginx范例学习role

  • 2创建用户

ansible-role角色:通过一个批量部署nginx范例学习role

  • 3安装程序

ansible-role角色:通过一个批量部署nginx范例学习role

  • 4对应不同版本主机给与不同配置文件
    ansible-role角色:通过一个批量部署nginx范例学习role_第6张图片
    这些模板文件都在templates文件夹下
    notify对应的文件在handlers文件夹的main.yml中
    ansible-role角色:通过一个批量部署nginx范例学习role
  • 5拷贝网页数据
    ansible-role角色:通过一个批量部署nginx范例学习role

  • 6启动服务
    ansible-role角色:通过一个批量部署nginx范例学习role

  • 7测试

ansible-role角色:通过一个批量部署nginx范例学习role
配置文件中已将端口改为8080

一些总结

  • 各个目录作用

/roles/project/ :项目名称,有以下子目录

  • files/ :存放由copy或script模块等调用的文件
    templates/:template模块查找所需要模板文件的目录
    tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
  • handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
  • vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
  • meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件,其它文件需在此文中通过include进行包含
  • default/:设定默认变量时使用此目录中的main.yml文件