01.角色(roles)

1.1 什么场景下会用roles?

  • 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器。
  • 只能,第一个play用到第一个主机上,用来构建httpd,第二个play用到第二个主机上,用来构建php,第三个play用到第三个主机上,用来构建MySQL
  • 这些个play定义在playbook中比较麻烦,将来也不利于模块化调用,不利于多次调用
  • 比如说后来又加进来一个主机,这个第4个主机既是httpd服务器,又是php服务器,我们只能写第4个play,上面写上安装httpd和php。
  • 这样playbook中的代码就重复了。
  • 为了避免代码重复,roles能够实现代码重复被调用。

1.2 roles目录结构

site.yml
webservers.yml
fooservers.yml
hosts

roles/
  common/    # 用于存放公共资源的地方,比如几个模块都需要使用的 变量等
    tasks/            # tasks - 包含角色要执行的主要任务列表
    files/            # files - 角色部署时用到的文件
    templates/        # templates - 角色部署时用到的模板
    handlers/         # handlers - 包含角色使用的处理程序
    vars/             # vars - 角色其他的变量
    defaults/         # defaults - 角色默认的变量
    meta/             # meta - 角色定义的一些元数据
  webservers/
    files/
    templates/
    tasks/
    handlers/
    vars/

__END__