Ansible角色管理-Roles(实例演示!!!)
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Roles的概述Roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,Roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地inclu
千家信息网最后更新 2026年11月01日Ansible角色管理-Roles(实例演示!!!)
Roles的概述
Roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,Roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。Roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。Roles的目录
| 目录名称 | 具体含义 |
|---|---|
| files | 用来存放由copy模块或script模块调用的文件 |
| templates | 用来存放j正则模板,template模块会自动在此目录中寻找正则模板文件 |
| tasks | 此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件 |
| handlers | 此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作 |
| vars | 此目录应当包含一个main.yml文件,用于定义此角色用到的变量 |
| defaults | 此目录应当包含一个main.yml文件,用于为当前角色设定默认变量 |
| meta | 此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系 |
在playbook中使用Roles的步骤
- 创建以roles命令的目录
#yum装完默认就有mkdir /etc/ansible/roles/ -p - 创建全局变量目录
mkdir /etc/ansible/group_vars/ -ptouch /etc/ansible/group_vars/all#文件名自己定义,引用的时候注意- 在roles目录中分别创建以各角色名称命令的目录,如httpd
mkdir /etc/ansible/roles/common -p- 在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,但不可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p- 在每个角色的handlers、tasks、meta、defaults、vars目录下创建main.yml文件,千万不能自定义
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml- 在playbook文件中,调用各角色
vim /etc/ansible/site.yml- hosts: webserver remote_user: root roles: - httpd - mysql安装搭建LAMP架构实例演示
- 创建服务组件工作目录
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p- 创建yml空文件
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml- 编写httpd模块
#写一个简单的tasks/main.ymlvim /etc/ansible/roles/httpd/tasks/main.yml- name: ensure apache is at the latest version yum: pkg={{ pkg }} state=latest#定义变量,可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中vim /etc/ansible/roles/httpd/vars/main.ymlpkg: httpd- 编写mysql模块
vim /etc/ansible/roles/mysql/tasks/main.yml- name: ensure mysql is at the latest version yum: pkg={{ pkg }} state=latest#定义变量vim /etc/ansible/roles/mysql/vars/main.ymlpkg: mariadb*- 编写php模块
vim /etc/ansible/roles/php/tasks/main.yml- name: ensure php is at the latest version yum: pkg={{ pkg }} state=latest#定义变量vim /etc/ansible/roles/php/vars/main.ymlpkg: php*- 编写roles实例
vim /etc/ansible/site.yml- hosts: webserver remote_user: root roles: - httpd - mysql - php#执行剧本ansible-playbook site.yml 执行完以后在远程主机上,查询验证指定服务是否安装
rpm -q httpdhttpd-2.4.6-90.el7.centos.x86_64rpm -q mariadbmariadb-5.5.64-1.el7.x86_64rpm -q phpphp-5.4.16-46.1.el7_7.x86_64谢谢阅读!
目录
文件
角色
变量
模块
命令
服务
实例
主机
任务
全局
名称
场景
模板
正则
演示
便捷
特殊
剧本
动作
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
厦门中拓互联网络科技有限公司
互联网和科技创新
互联网最新的科技有限公司
没上市的科技互联网公司
互联网科技与金融科技
互联网科技公司发展
上海挚品互联网科技
苏州互联网科技贷款公司
全球顶尖互联网科技公司
港股科技和互联网
千方科技属于互联网企业吗
未来五年的互联网科技
深圳市优智互联网科技有限公司
西安小鹰速贷互联网科技有限公司
互联网科技如何创业
恒生互联网科技业指数调整周期
互联网方面的科技前沿
深圳无忧互联网科技
好易买互联网科技
安徽零酒互联网科技有限公司
易互联网科技有限公司
杭州互联网科技公司
互联网科技的英文
深圳国际航运科技和互联网
剑昆互联网络科技有限公司临桂
佳云科技和互联网广告
互联网经济与金融科技
996高科技互联网公司
河南住房之家互联网科技
佛山市翊博互联网络科技有限公司