ansible-roles模块

news2024/11/27 10:21:04

roles用于层次性,结构化地组织playbook,roles能够根据层次型结构自动装载变量文件,tasks以及handlers等。要使用只要载playbook中使用include指令引入即可。

(roles就是通过分别将变量,文件,任务,模板及处理器防置于单独的目录中。用要用于代码复用)

角色就是:palybook里面按照模块分离出来放到roles目录

roles内各目录含义解释

files:用来存放有copy模块或script模块调用的文件。

temlates:用来存放jinjia2模块,template模块会自动在此目录中寻找jinjia2模块文件

tasks:此目录因该包含一个main.yml文件,用于定义此角色的任务的任务列表,此文件可以使用include包含其他位于此目录的task文件。

roles的目录结构

 #http mysql和php相当于playbook中的每个play主题

//roles 内各目录含义解释
●files
用来存放由 copy 模块或 script 模块调用的文件。

●templates
用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

●tasks
此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用 include 包含其它的位于此目录的 task 文件。

●handlers
此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

●vars
此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

●defaults
此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。 这些变量具有所有可用变量中最低的优先级,并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量●meta
此目录应当包含一个 main.yml 文件,用于定义此角色的元数据信息及其依赖关系。

在一个 playbook 中使用 roles 的步骤:
(1)创建以 roles 命名的目录
mkdir /etc/ansible/roles/ -p    #yum装完默认就有

(2)创建全局变量目录(可选)
mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all     #文件名自己定义,引用的时候注意

(3)在 roles 目录中分别创建以各角色名称命名的目录,如 httpd、mysql
mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql

(4)在每个角色命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目录可以创建为空目录,也可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}

(5)在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件,千万不能自定义文件名
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml

(6)修改 site.yml 文件,针对不同主机去调用不同的角色
vim /etc/ansible/site.yml
---
- hosts: webservers
  remote_user: root
  roles:
     - httpd
- hosts: dbservers
  remote_user: root
  roles:
     - mysql
     
(7)运行 ansible-playbook
cd /etc/ansible
ansible-playbook site.yml


示例:
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

------编写httpd模块------
写一个简单的tasks/main.yml
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install apache
  yum: name={{pkg}} state=latest
- name: start apache
  service: enabled=true name={{svc}} state=started
 
//定义变量:可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中
vim /etc/ansible/roles/httpd/vars/main.yml
pkg: httpd
svc: httpd

-------编写mysql模块-------
vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mysql
  yum: name={{pkg}} state=latest
- name: start mysql
  service: enabled=true name={{svc}} state=started
  
vim /etc/ansible/roles/mysql/vars/main.yml
pkg:
  - mariadb
  - mariadb-server
svc: mariadb

-------编写php模块-----
vim /etc/ansible/roles/php/tasks/main.yml
- name: install php
  yum: name={{pkg}} state=latest
- name: start php-fpm
  service: enabled=true name={{svc}} state=started

vim /etc/ansible/roles/php/vars/main.yml
pkg:
  - php
  - php-fpm
svc: php-fpm

-----编写roles示例-----
vim /etc/ansible/site.yml
---
- hosts: webservers
  remote_user: root
  roles:
   - httpd
   - mysql
   - php


cd /etc/ansible
ansible-playbook site.yml
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

u盘中毒文件夹数据丢失怎么恢复?这里有4个恢复方案

您是否曾经遇到过U盘中毒的情况?连累到文件夹内的数据文件消失了,如果丢失的是重要数据,这或许会对我们工作或学习带来了极大的困扰。为了解决您的困扰,下面将根据不同情况给予不同的U盘中毒数据恢复方案,帮助您尽快找…

小红书各行业流量分析:普通人怎么有效使用小红书?

随着互联网的发展,越来越多的人开始利用自媒体平台赚钱。小红书是近年来兴起的一种新型自媒体平台,也是国内最大的海外购物分享平台之一。随着小红书用户的不断增加,小红书的流量趋势也在发生着变化。那么,在各行业的流量趋势中&a…

驱动开发:文件微过滤驱动入门

MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单,…

XV-440-10TVB-1-50伊顿触摸屏EATON

​ XV-440-10TVB-1-50伊顿触摸屏EATON XV-440-10TVB-1-50伊顿触摸屏EATON ESD与dcs是完全分离的。DCS主要用于过程工业参数指标的动态控制。在正常情况下,DCS动态监控着生产过程的连续运行,保证能生产出符合要求的优良产品。而ESD则是对于一些关键的工艺…

python获取某博热搜数据并保存成Excel

python获取某博🧣热搜数据 一、获取目标、准备工作二、开始编码 一、获取目标、准备工作 1、获取目标: 本次获取教程目标:某博🧣热搜 2、准备工作 环境python3.xrequestspandas requests跟pandas为本次教程所需的库&#xff0c…

AM@空间曲面@平面@面面位置关系@点面距离

文章目录 曲面曲线平面点法式方程不共线的3点确定一个平面方程同解平面方程的一般式特别情形与坐标轴平行的平面与坐标轴垂直与坐标面平行的平面ABC0例 截距式两平面的夹角👺两平面的位置关系垂直关系平行关系例 点到平面的距离小结例 曲面 空间解析几何中"曲…

潜伏顶升AMR ∣解决方案背后——不断进化的市场和客户需求

潜伏顶升式AMR是通过潜入料架底部,利用升降机构提升料架,实现物料的输送;可支持货架、料车、笼车等多种载具,多用于物料架、物料车的转运。有效降低人力资源成本,减轻人工劳动强度。 作为移动机器人(AMR/AGV)近几年发展…

SpringBoot中集成Redis

目标 在原有SpringBoot项目中&#xff0c;集成Redis&#xff0c;并实现Dao层&#xff0c;Service层&#xff0c;Controller层。 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</…

大数据云计算运维之Nginx反向代理与负载均衡

Nginx 简介 一、Nginx概述 1.1 概述 Nginx&#xff08;“engine x”&#xff09;是一个高性能的 HTTP /反向代理的服务器及电子邮件&#xff08;IMAP/POP3)代理服务器。 官方测试nginx能够支撑5万并发&#xff0c;并且cpu&#xff0c;内存等资源消耗却非常低&#xff0c;运…

合并reducer

reducer工程化第一步&#xff1a;合并 各个模块下reducer的模板: 1.符是代表直接从src下面进行寻找 2.定义初始状态 3.深拷贝状态 4.进行行为判断 votereducer这么写&#xff1f; 合并reducer 导出总的reducer 模块化开发后往事件池放的更新方法&#xff0c;在disptch的时候…

交换机新设备版本升级(超详细!快进来学习!)

本文主要讲述了华三新上架交换机机设备升级全过程&#xff01;同理&#xff0c;其他的交换机设备进行升级也是同样的思路&#xff01; 升级流程 1、使用console线以及网线将电脑和交换机进行连接&#xff08;console口和网口&#xff09;; 2、打开以太网卡&#xff0c;“控制面…

25k字图文解读YOLOv8及实例分割(附python代码)

学习使用 未经详细专业审核 目录 0.引言1.概述1.1 Backbone1.2 Head1.3 Loss1.4 Train 2.模型结构2.1 Backbone和Neck的具体变化2.2 Head的具体变化 3.Loss计算3.1 正负样本分配策略3.2 Loss计算 4.训练数据增强5.训练策略6.模型推理过程7.网络模型解析7.1 卷积神经单元&#x…

软件设计模式之原型模式

一.定义 原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是由于简单&#xff0c;使用的场景才非常地多&#xff0c;其定义如下: Specify the kinds of objects to create using a prototypical instance, and create new objects by copyingthis protot…

基础设施SIG月度动态:ABS新增ISO、VHD镜像构建,自动热补丁制作流程正式上线

基础设施 SIG&#xff08;OpenAnolis Infra SIG&#xff09;目标&#xff1a;负责 OpenAnolis 社区基础设施工程平台的建设&#xff0c;包括官网、Bugzilla、Maillist、ABS、ANAS、CI 门禁以及社区 DevOps 相关的研发工程系统。 01 SIG 整体进展 1、龙蜥社区官网与 CSDN dev…

smigroup LAFERT 伺服电机 B7108P-03177

​ smigroup LAFERT 伺服电机 B7108P-03177 smigroup LAFERT 伺服电机 B7108P-03177 从系统的可扩展性和兼容性的方面来说&#xff1a; 市场上控制类产品繁多&#xff0c;无论DCS还是PLC&#xff0c;均有很多厂商在生产和销售。对于PLC系统来说&#xff0c;一般没有或很少有扩…

如何与领导团队沟通并赢得他们的支持以推动企业的敏捷转型进程?

在与领导团队沟通并赢得他们对敏捷转型的支持时&#xff0c;重要的是要从战略上有效地处理这种情况。建议采取的一些步骤&#xff1a; 了解他们的观点&#xff1a;在开始任何沟通之前&#xff0c;尝试了解领导团队对敏捷转型的担忧和保留意见。可以帮助调整方法并解决具体问题。…

2023年5月信息系统项目管理师试题及答案解析

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1.“新型基础设施”主要包括信息技术设施&#xff0c;融合基础设施和创新基础设施三个方面&#xff0c;其中信息基础设施包括___1___。 ①通信基础设施 ②智能交…

【Mysql 存储过程 Or 存储函数 傻傻分不清? 】

MySQL的存储函数&#xff08;自定义函数&#xff09;和存储过程都是用于存储SQL语句的。但是什么时候用什么呢&#xff1f;是不是总是傻傻的分不清&#xff1f; 本文来详细的讲一下存储函数 和存储过程 &#xff0c;以后再也不会迷糊。 存储函数 | 存储过程 一、 异同点二、 存…

云原生之深入解析Kubernetes中Kubectl Top如何进行资源监控

一、Kubectl top 的使用 kubectl top 是基础命令&#xff0c;但是需要部署配套的组件才能获取到监控值&#xff1a; 1.8 以下&#xff1a;部署 heapter&#xff1b; 1.8 以上&#xff1a;部署 metric-server&#xff1b; kubectl top node&#xff1a;查看 node 的使用情况&a…

25.单元测试、反射

一.单元测试 1.1 什么是单元测试 单元测试就是针对最小的功能单元编写测试代码&#xff0c;Java程序最小的功能单元是方法。因此&#xff0c;单元测试就是针对Java方法进行的测试&#xff0c;进而检查 方法的正确性。 1.2 目前测试方法是怎么进行的 ①只有一个main方法&#x…