千家信息网

Ansible1.2新特性roles的介绍和使用

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,一、简介Ansible1.2版本后引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在pla
千家信息网最后更新 2026年11月03日Ansible1.2新特性roles的介绍和使用

一、简介

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

二、roles目录结构

官方推荐在/etc/ansible/roles目录下使用roles,但不是必须的,roles目录可以自行创建

tasks-包含角色要执行的任务的主要列表,至少应该有main.yml文件,有其他的yml文件通过include进行包含
handlers-包含处理程序(notify触发的任务),该角色甚至该角色之外的任何地方都可以使用这些处理程序。至少应该有main.yml文件
defaults-角色的默认变量,至少应该有main.yml文件
vars-角色的其他变量,至少应该有main.yml文件
files-包含可以通过此角色部署的文件。
templates-包含可以通过此角色部署的模板。
meta-为此角色定义一些元数据,至少应该有main.yml文件

以部署grafana+influxdb+telegraf为例
目录结构如下:

在项目目录中,剧本与roles目录平级,roles目录下包含各角色目录,各角色目录中包含使用到的files,handlers,tasks,templates,vars;对于不使用的meta和defaults目录,最好排除。

三、roles示例

以部署grafana+influxdb+telegraf为例

3.1、需求

在node2上部署三件套,在node3上部署influxdb,配置文件中的有些参数使用变量,配置文件使用模板,更改配置文件后重启服务

3.2、部署剧本 deploy.yml

--- - hosts: node2   remote_user: root   roles:   - grafana   - influxdb   - telegraf- hosts: node3   remote_user: root   roles:   - influxdb

3.3、角色以grafana为例

roles/grafana/tasks/main.yml文件

---- name: "copy grafana to destination server"  copy:    src: grafana-6.3.0-1.x86_64.rpm    dest: /tmp/- name: "Install the grafana rpm package locally"  yum:    name: /tmp/grafana-6.3.0-1.x86_64.rpm    state: present- name: "template the grafana.ini"  template:    src: grafana.ini.j2    dest: /etc/grafana/grafana.ini  notify: restart grafana- name: "enable grafana"  systemd:    name: grafana-server    state: restarted    daemon_reload: yes    enabled: yes

roles/grafana/templates/grafana.ini.j2模板配置文件

# The http port  to usehttp_port = {{ http_port }}

roles/grafana/vars/main.yml 文件

http_port: 8000

roles/grafana/handlers/main.yml文件

- name: restart grafana  systemd:    name: grafana-server    state: restarted    daemon_reload: yes

3.4、hosts文件

/etc/ansible/hosts [node2]192.168.143.131[node3]192.168.143.132 

3.5、执行deploy.yml

ansible-playbook deploy.yml
文件 角色 目录 变量 模板 结构 配置 任务 处理 剧本 可以通过 场景 层次 程序 服务 特性 便捷 为此 主机 件套 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技活动banner 重生之互联网科技帝国 科技金融是不是互联网金融 厦门中拓互联网络科技有限公司 互联网是不是新科技 互联网金融公司科技 万易互联网科技有限公司 卓越科技(互联网 ) 西安互联网科技公司 汉立互联网科技有限公司联系电话 云创客互联网科技公司 深圳国际航运科技和互联网 温州喔噻互联网科技有限公司 互联网科技中介 北京华百购互联网科技有限公司 互联网科技教育视频 彤创互联网科技有限公司 互联网科技包装股份有限公司上市 现代互联网科技公司 互联网科技企业文化 互联网科技公司有哪些 恒生科技互联网指数分析 彤创互联网科技有限公司 武汉健翔互联网络科技有限公司 互联网科技的全部知识 互联网科技创新的路径 群盈汇互联网科技有限公司 恒生互联网科技业指数调整周期 广东工业互联网大赛深圳学泰科技 互联网科技机房
0