自动化运维工具-Ansible的Roles的使用

简介: 自动化运维工具-Ansible的Roles的使用

一、Roles是什么?



编写playbook有个弊端就是无法实现复用


假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件。很难实现灵活的调用。。


roles 用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。


要使用roles只需要在playbook中使用include指令即可。


简单来讲,roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。


角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。


二、目录层级说明



roles每个角色中,以特定的层级目录进行组织


Mysql/ 角色


Files/ #存放有copy或script模块等调用的文件;’

Tepmlates/ #template模块查找所需要模板文件目录;


Tasks/


#定义任务;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。


Handlers/


#定义触发器;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。


Vars/


#定义变量;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。


Meta/ #定义变量;至少应该包含一个名为main.yml的文件;定义当前角色的特殊设定及其依赖


关系;其他的文件需要在此文件中通过include进行包含。


Default/ #设定默认变量时使用此目录中的main.yml文件。


三、调用Roles实例



#创建固定目录结构
[root@ansible roles]# tree
.
├── httpd
│   ├── files
│   │   └── httpd.conf
│   └── tasks
│       ├── copyfile.yml
│       ├── main.yml
│       └── user.yml
├── memcache
├── mysql
└── nginx
    ├── main.yml
    ├── tasks
    │   ├── group.yml
    │   ├── restart.yml
    │   ├── start.yml
    │   ├── user.yml
    │   └── yum.yml
    └── templates
8 directories, 10 files
[root@ansible roles]# cd nginx/
#定义执行的顺序
[root@ansible nginx]# cat main.yml 
- include: group.yml
- include: user.yml
- include: yum.yml
- include: start.yml
#每个任务分别写出来
[root@ansible nginx]# cd tasks/
[root@ansible tasks]# cat group.yml 
- name: create group
  group: name=nginx gid=80
[root@ansible tasks]# cat restart.yml 
- name: start service
  service: name=nginx state=restarted
[root@ansible tasks]# cat start.yml 
- name: start service
  service: name=nginx state=started enabled=yes
[root@ansible tasks]# cat user.yml 
- name: create user
  user: name=nginx group=nginx uid=80 system=yes shell=/sbin/nologin
[root@ansible tasks]# cat yum.yml 
- name: yum install package
  yum: name=nginx
编写yml调用nginx角色
[root@ansible ansible]# cat role_nginx.yml 
- hosts: wsr
  remote_user: root
  roles:
    - role: nginx
通过ansible-playbook来执行
[root@ansible ansible]# ansible-playbook role_nginx.yml 
PLAY [wsr] *****************************************************************************
TASK [Gathering Facts] *****************************************************************
ok: [192.168.100.10]
ok: [192.168.100.20]
PLAY RECAP *****************************************************************************
192.168.100.10             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.100.20             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0


相关文章
|
1月前
|
弹性计算 运维 监控
|
20天前
|
人工智能 自然语言处理 语音技术
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具
FilmAgent 是由哈工大与清华联合推出的AI电影自动化制作工具,通过多智能体协作实现从剧本生成到虚拟拍摄的全流程自动化。
209 10
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具
|
27天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
100 11
|
1月前
|
弹性计算 运维 监控
自动化AutoTalk第十一期-应知必会的自动化工具之阿里云配额中心
本次分享主题为“应知必会的自动化工具之阿里云配额中心”,课程围绕三个方面展开:1) 认识配额及其作用;2) 配额管理的意义与方法;3) 阿里云配额中心的功能和使用场景。通过学习,了解如何有效管理和监控配额,避免资源限制影响业务,并实现自动化集成,提升运维效率。
46 10
|
1月前
|
JavaScript Java 开发工具
AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
AutoTalk第十三期探讨阿里云SDK支持策略,涵盖四大方面:发布策略、版本规范、更新策略及停止支持策略。重点介绍SDK的及时性、完整性、测试覆盖度和版本命名规范;并以Python部分语言版本停止支持为案例,帮助开发者了解维护策略,确保平稳过渡到新版本。
|
2月前
|
弹性计算 运维 监控
云资源运维难?阿里云免费工具来帮忙
阿里云推出免费运维工具——云服务诊断,帮助用户提升对云资源的运维效率、降低门槛、减轻负担。其核心功能包括「健康状态」和「诊断」。通过「健康状态」可实时查看云资源是否正常;「诊断」功能则能快速排查网络、配置、安全等问题,并提供修复建议,助您迅速恢复业务。体验评测活动火热进行中,参与即有机会赢取索尼头戴耳机、小米背包等好礼。活动链接:https://developer.aliyun.com/topic/cloud-health。
579 24
|
1月前
|
算法 安全 Java
自动化AutoTalk第十期:应知必会的自动化工具-阿里云SDK
本期《自动化AutoTalk》第十期聚焦应知必会的自动化工具——阿里云SDK。主要内容分为三部分:1. 阿里云SDK概述,介绍其支持的300多款云产品和8种主流编程语言;2. 快速生成SDK示例,以Java语言为例展示如何通过OpenAPI门户快速生成并下载SDK工程;3. 进阶特性介绍,涵盖签名算法、Endpoint配置、代理设置、HTTPS请求配置、超时机制及异常处理等重要功能。通过这些内容,帮助开发者更高效、安全地使用阿里云SDK。
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
265 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
2月前
|
运维 Ubuntu 网络协议
自动化运维:使用Ansible进行服务器配置管理
在现代IT架构中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和标准化服务器的配置管理过程。通过具体的代码示例和操作步骤,我们将展示如何快速部署应用、管理配置以及自动化日常任务,从而确保环境的一致性和可靠性。