自动化运维工具Ansible之roles

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

一、概述

1.1 概念

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

1.2 roles目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@puppet-server web] # tree  /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
     ├── db                         #定义db角色
     │   ├── files
     │   │   └── my.cnf
     │   ├── handlers
     │   │   └── main.yml
     │   └── tasks
     │       └── main.yml
     ├── db.yml
     ├── php                         #定义php角色
     │   ├── files
     │   │   └── php.ini
     │   └── tasks
     │       └── main.yml
     ├── web                         #定义web角色
     │   ├── default                #设定默认变量时使用此目录中的main.yml文件。
     │   ├── files                  #存放文件,对应于tasks中copy模块或scripts模块中的文件
     │   │   └── httpd.conf
     │   ├── handlers               #定义触发器;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。
     │   │   └── main.yml
     │   ├── meta                   #定义变量;至少应该包含一个名为main.yml的文件;定义当前角色的特殊设定及其依赖关系;其他的文件需要在此文件中通过include进行包含。
     │   ├── tasks                  #定义任务;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。
     │   │   └── main.yml
     │   ├── templates              #template模块查找所需要模板文件目录;
     │   └── vars                   #定义变量;至少应该包含一个名为main.yml的文件;其他的文件需要在此文件中通过include进行包含。
     └── web.yml
注:没有存放文件的目录可以不创建

二、安装web与db环境


主机名 IP地址 作用
ansible-server 172.20.4.50 ansible控制端
ansible-1 172.20.4.51 安装web环境
ansible-2 172.20.4.52 安装db环境

2.1 配置httpd角色

1
2
3
4
5
6
7
8
9
10
cd  /etc/ansible/roles/web
cat  tasks /main .yml 
- name:  install  httpd
   yum: name=httpd state=present
- name: configuration httpd
   copy: src=httpd.conf dest= /etc/httpd/conf/httpd .conf
   notify:
   - restart httpd
- name: start httpd
   service: name=httpd state=started enabled= yes
1
2
3
cat  handlers /main .yml 
- name: restart httpd
   service: name=httpd state=restarted

将已经编辑好的httpd.conf配置文件存放到files目录下

1
2
3
4
5
cat  /etc/ansible/roles/php/tasks/main .yml 
- name:  install  php
   yum: name=php state=present
- name: configuration php
   copy: src=php.ini dest= /etc/php .ini

2.2 配置php角色

将已经配置好的php.ini 存放到php目录下的files目录内

1
2
3
4
5
6
7
cat  /etc/ansible/roles/web .yml 
- name: web
   remote_user: root
   hosts: agent
   roles:
   - php
   - web

查看整体web.yml

1
2
3
4
5
6
7
cat  /etc/ansible/roles/web .yml 
- name: web                            
   remote_user: root
   hosts: web                
   roles:
   - php
   - web

2.3 配置db角色

1
2
3
4
5
6
7
8
9
cat  /etc/ansible/roles/db/tasks/main .yml 
- name:  install  mysql service
   yum: name=mysql-server state=present
- name: configuration mysql
   copy: src=my.cnf dest= /etc/my .cnf
   notify:
   - restart mysqld
- name: start mysqld
   service: name=mysqld state=started enabled= yes
1
2
3
cat  /etc/ansible/roles/db/handlers/main .yml 
- name: restart mysqld
   service: name=mysqld state=restarted

将已经配置好的php.ini 存放到php目录下的files目录内

查看整体db.yml

1
2
3
4
5
6
cat  /etc/ansible/roles/db .yml 
- name: mysqld service
   remote_user: root
   hosts: db
   roles:
   - db

三、测试验证

dc3eeb4fbf809d852a5a2fb83e054584.png

安装web

f27a70980d1dfaff3610a74a9ade05bc.png

在web定义的主机组内的主机172.20.4.51上查看httpd与php配置

b4c2a6f20592d209f51464fcb37b34d8.png

安装db

e224d67689e10b37c3dd6de5c005fa10.png

在db定义的主机组内的主机上172.20.4.52查看mysql服务

5f3a38b355f462d798bc25ad56281b3a.png










本文转自 KaliArch 51CTO博客,原文链接:http://blog.51cto.com/kaliarch/1974264,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
3月前
|
运维 Prometheus 监控
3 年部署经验总结:用自动化工具轻松管理 300+ 服务器开源软件
三年前接手公司IT部门时,我满怀信心,却发现部署效率低下。尽管使用了GitLab、Jenkins、Zabbix等100+开源工具,部署仍耗时费力。文档厚重如百科,却难解实际困境。一次凌晨三点的加班让我下定决心改变现状。偶然看到一篇国外博客,介绍了自动化部署的高效方式,我深受启发。
163 0
|
2月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
265 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
29天前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
2月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
105 6
|
3月前
|
人工智能 数据可视化 数据挖掘
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
本文深入分析了传统手动日报在数据孤岛、格式混乱和时效性差三大痛点,并探讨了自动化日报带来的效率提升、决策优化等四大核心价值。通过对板栗看板、SmartBrief、n8n 等六款主流工具的功能、适用场景及实战效果进行测评,为企业提供科学的选型建议与实施路径。
团队日报不用愁!自动化生成工具亲测:任务进度实时同步
|
1月前
|
人工智能 缓存 自然语言处理
86_自动化提示:AutoPrompt工具
在当今人工智能领域,提示工程(Prompt Engineering)已成为释放大语言模型(LLM)潜能的关键技术。随着LLM规模和能力的不断增长,如何设计高效、精确的提示词成为研究和应用的焦点。然而,传统的手工提示工程面临着巨大挑战
|
3月前
|
人工智能 供应链 数据可视化
工作流梳理工具实战教程:手把手教你绘制第一张自动化流程图
本文剖析了团队因流程混乱导致重复劳动和效率低下的问题,提出通过工作流梳理提升协作效率的解决方案。总结了流程梳理的六大核心需求,并深度测评了6款主流工具,国内有板栗看板那,国外有kiss flow结合团队规模与需求提供选型建议,助力企业高效落地流程优化。
|
2月前
|
安全 搜索推荐 机器人
风险规则引擎-RPA 作为自动化依赖业务决策流程的强大工具
机器人流程自动化(RPA)是一种通过软件“机器人”自动执行重复性任务的技术,能大幅提升工作效率。它适用于财务、电商等领域的标准化流程,如账单处理和退货管理。然而,RPA在复杂决策场景中存在局限,需结合决策模型(DMN)和业务规则管理系统(BRMS)实现流程与决策的协同自动化,从而增强灵活性与业务价值。
|
3月前
|
数据采集 运维 监控