ansible的role用法

目录

  • 目录结构介绍
  • 案例

目录结构介绍

可以通可以通过使用 ansible-galaxy 命令再当前目录自动生成 role 的基本目录结构。
myrole为文件名(角色名)

ansible-galaxy init myrole

如果没有安装Ansible Galaxy,你可以使用以下命令安装:

ansible-galaxy collection install community.general

标准目录结构:
可以根据需求自定义目录结构

myrole/
├── defaults/
│   └── main.yml
├── files/
├── handlers/
│   └── main.yml
├── meta/
│   └── main.yml
├── tasks/
│   └── main.yml
├── templates/
├── tests/
│   ├── inventory
│   └── test.yml
├── vars/
│   └── main.yml
└── README.md
  • defaults/: 包含 role 的默认变量,存放在 main.yml 文件中。
  • files/: 可选,存放需要在目标主机上复制的文件。
  • handlers/: 包含处理器(handlers),这些处理器会在任务执行完毕后运行,通常在 main.yml 中定义。
  • meta/: 包含与 role 相关的元数据,如作者、依赖等,存放在 main.yml 中。
  • tasks/: 包含所有要执行的任务,通常在 main.yml 中定义。
  • templates/: 可选,存放用于在目标主机上生成文件的 Jinja2 模板。
  • tests/: 包含用于测试 role 的文件,如测试用的 inventory 和测试任务 test.yml
  • vars/: 包含其他变量文件,通常在 main.yml 中定义。
  • README.md: 包含 role 的说明文档,描述了 role 的用途、配置选项等信息。

脚本运行文件:

myansibleproject/
├── myrole/
└── playbooks/└── playbook.yml

playbooks/playbook.yml:运行脚本的入口;该目录不会自动生成,位置取决于个人或团队

为了组织和管理起见,可以考虑以下几点建议:

  1. 项目根目录: 将 playbook.yml文件放在项目根目录中,这样可以使整个 Ansible 部署更为结构化和清晰。
  2. playbooks 目录: 如果你有多个 playbook 文件或者希望将它们统一放置,可以在项目根目录下创建一个 playbooks 或类似的目录,并将 playbook 文件放在其中。
  3. 版本控制: 如果你使用版本控制系统(如 Git),建议将 playbook 文件一起管理,这样可以轻松跟踪和回滚配置更改。

案例

案例简单,主要是帮助理解
需求:在host1服务器上安装httpd服务,修改配置文件时重启httpd服务
案例目录结构:

roles
├── httpd
│   ├── files
│   │   └── index.html  #用于修改httpd的欢迎页
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── httpd.conf.j2  #用于修改httpd的配置文件
│   └── vars
│       └── main.yml
└── playbooks└── httpd.yml  #脚本运行入口
  1. 编写index.html,只做演示简单编写一下(可以理解为项目文件比如换成项目压缩包,进行远程解压)
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>流星雨</title><meta name="keywords" content="关键词,关键字"><meta name="description" content="描述信息"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" /> <style>body{margin: 0;overflow: hidden;}</style></head><body><!-- <canvas>画布 画板 --><canvas width="400" height="400" style="background: #000000;" id="canvas"></canvas><!-- <script> 画笔 --><script>//声明一片空间的名字叫canvasvar canvas = document.getElementById("canvas");//获取画板2D 渲染上下文的方法var ctx =canvas.getContext("2d");//让画板的屏幕等于屏幕大小//1、获取屏幕对象var s = window.screen;//2、获取屏幕的宽和高var w =s.width;var h = s.height;//3、设置画板大小canvas.width = w;canvas.height = h;//设置文字大小var fontSize = 14;//计算一行有多少个文字取整数向下取数var clos = Math.floor(w/fontSize);//创建数组把clos个0(y坐标存储起来)var drops = [];//修改要展示的文字或字符,可以是任意字符但必须是字符串var str = "欢迎";//往数组里添加clos个0for(var i = 0;i<clos;i++){drops.push(0);}//绘制文字function drawString(){//给矩形设置填充色ctx.fillStyle="rgba(0,0,0,0.05)"//绘制一个矩形ctx.fillRect(0,0,w,h);//添加文字样式ctx.font = "600 "+fontSize+"px 微软雅黑";//设置文字颜色ctx.fillStyle = "#00ff00";for(var i = 0;i<clos;i++) {//x坐标var x = i * fontSize;//y坐标var y = drops[i]*fontSize;//绘制文字ctx.fillText(str[Math.floor(Math.random()*str.length)],x,y);if(y>h&&Math.random()>0.99){drops[i] = 0;}drops[i]++;}}//定义定时器,每个30毫秒执行一次setInterval(drawString,60);</script></body>
</html>
  1. 获取httpd的配置文件
yum install -y httpd && cp /etc/httpd/conf/httpd.conf roles/httpd/templates/httpd.conf.j2
  1. 编写任务vim roles/httpd/tasks/main.yml
---  # 表示衔接上文
# HTTPD角色的任务文件# 安装最新版本的httpd
- name: install httpdyum: name=httpd state=latest# 复制index.html文件到Web服务器的默认页面目录
- name: copy index.htmlcopy: src=index.html dest=/var/www/html/index.html# 复制httpd.conf.j2模板文件到HTTPD配置文件目录,并在完成后通知重启httpd服务
- name: copy httpd.conftemplate: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.confnotify: restart httpd# 启动httpd服务并设置开机自启动
- name: runnung httpdservice: name=httpd state=started enabled=yes
  1. 编写处理程序vim roles/httpd/handlers/main.yml
--- # 表示衔接上文
# httpd的处理程序文件# 重新加载httpd服务
- name: restart httpdservice: name=httpd state=reloaded
  1. 修改配置文件vim roles/httpd/templates/httpd.conf.j2,把端口号设置为变量
45 #
46 #Listen 12.34.56.78:80
47 Listen {{httpd_port}}
48
49 #
  1. 编写变量
--- # 表示衔接上文
# httpd的变量文件# httpd服务使用的端口号
httpd_port: 80
  1. 编写入口文件
# 指定主机为host1
- hosts: host1# 应用httpd角色来管理该主机roles:- httpd
  1. 检查脚本(必须在roles目录内,否则报错)
# 进入roles目录
cd roles/# 运行指令检查./playbooks/httpd.yml是否可用
ansible-playbook ./playbooks/httpd.yml --syntax-check# 结果如下则没问题
playbook: ./playbooks/httpd.yml
  1. 运行脚本(必须在roles目录内,否则报错)
# 进入roles目录
cd roles/ansible-playbook ./playbooks/httpd.yml
  1. 把端口号改一下看是否成功(可跳过)
vim roles/httpd/vars/main.yml
--- # 表示衔接上文
# httpd的变量文件# httpd服务使用的端口号
httpd_port: 8088
# 进入roles目录
cd roles/ansible-playbook ./playbooks/httpd.yml

运行效果:

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

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

相关文章

Gson的基本使用:解析Json格式数据 序列化与反序列化

目录 一&#xff0c;Gson和Json 1&#xff0c;Gson 2&#xff0c;Json 3&#xff0c;Gson处理对象的几个重要点 4&#xff0c;序列化和反序列化 二&#xff0c;Gson的使用 1&#xff0c;Gson的创建 2&#xff0c;简单对象序列化 3&#xff0c;对象序列化&#xff0c;格…

C++学习笔记-友元函数的定义与使用

一、引言 在C中&#xff0c;友元函数&#xff08;Friend Function&#xff09;是一个独特而强大的特性&#xff0c;它打破了类的封装性&#xff0c;允许一个或多个非成员函数访问类的私有&#xff08;private&#xff09;和保护&#xff08;protected&#xff09;成员。尽管这…

Springboot+Maven多模块项目开发

SpringbootMaven多模块项目开发 前言示例项目建设Parent项目Common模块ModuleOne模块特别说明 参考&#xff1a; 前言 1.多模块项目的好处&#xff1a; 代码复用 一个后端项目的entity、dao、service代码需要用到前端服务&#xff0c;还需要用到后台管理&#xff0c;通过多模…

Wordpress安装到win10(2024年7月)

目录 1.wordpress介绍 2下载应用 2.1.wordpress 2.2XAMPP 2.3 PHPmyadmin 3.配置应用 3.1XAMPP进程 3.2 文件配置 3.3 phpmyadmin配置 4.配置网页 4.1 数据库创建 4.2 安装wordpress 5.进入面板 6.总结 1.wordpress介绍 WordPress是一个开源内容管理系统&#xff0…

Java台球厅助教教练预约上门到店系统源码

&#x1f3b1;一杆在手&#xff0c;天下我有&#xff01;台球助教教练预约系统&#xff0c;让球技飙升不是梦&#x1f680; &#x1f3af;【开篇&#xff1a;台球爱好者的福音来啦&#xff01;】&#x1f3af; 还在为找不到合适的台球教练而烦恼吗&#xff1f;或是想要在家就…

Django Nginx + uWSGI 安装配置

Django Nginx + uWSGI 安装配置 本文将详细介绍如何在Linux服务器上安装和配置Django、Nginx和uWSGI。这些技术通常一起使用来部署高性能的Django应用程序。我们将分步骤进行,确保您能够顺利地完成整个过程。 1. 安装Python和pip 在开始之前,请确保您的系统上安装了Python…

【C#学习笔记】数组

在C#中&#xff0c;数组是一种数据结构&#xff0c;用于存储一系列相同类型的元素。数组在C#中非常常见&#xff0c;因为它们提供了高效的数据存储和访问方式。下面&#xff0c;我将从基础概念到高级用法&#xff0c;为您详细解释C#中的数组。 基础概念 定义&#xff1a; 数组…

抽象代数精解【4】

文章目录 子群难点与例子中心化子与正规化子定义性质与正规化子的关系应用 det概述两个矩阵乘积的行列式等于这两个矩阵行列式的乘积 参考文献 子群 难点与例子 在 z 10 中&#xff0c;令 H { 2 ˉ , 4 ˉ , 6 ˉ , 8 ˉ } , 证明&#xff1a; H 中关于剩余类的乘法构成群&am…

社交圈子聊天交友系统搭建社交app开发:陌生交友发布动态圈子单聊打招呼群聊app介绍

系统概述 社交圈子部天交友系统是一个集成即时通讯、社区互动、用户管理等功能的在线社交平台。它支持用户创建个人资料&#xff0c;加入兴趣围子&#xff0c;通过文字、图片、语音、视频等多种方式进行交流&#xff0c;满足用户在不同场景下的社交需求 核心功能 -&#xff0c;…

【C#学习笔记】变量、变量类型

在C#中&#xff0c;变量是存储数据的容器&#xff0c;每个变量都有其特定的数据类型&#xff0c;这决定了变量可以存储的数据类型和大小。以下是关于C#中变量的由浅入深的详细解释&#xff0c;并附带代码示例和解释&#xff1a; 基础概念 定义&#xff1a; 变量是存储数据的容…

使用 abap2xlsx 给SMW0上传的模版填充值

入参 IS_DATA OBJ_ID CHAR SAP WWW 网关对象名 DEFAULT_FILE_NAME STRING Default Extension DEFAULT_EXTENSION STRING Default File Name FILE_FILTER STRING FILENAME STRING 下载文件地址 IT_CELL ROW INT4 行号 COLUMN INT4 列号 VALUE STRING 单…

Matlab编程资源库(1)选择结构

一、if语句 在 MATLAB 中&#xff0c; if 语句有 3 种格式。 (1) 单分支 if 语句&#xff1a; if 条件 语句组 end 当条件成立时&#xff0c;则执行语句组&#xff0c;执行完之后&#xff0c; 继续执行 if 语句的后继语句&#xff0c;若条件不成 立&#xff0c;则直接执…

金融无风险套利:逆回购

金融创新与逆回购 在当今金融创新不断涌现的时代&#xff0c;逆回购作为一种无风险套利工具&#xff0c;逐渐走进了大众的视野。它不仅为投资者提供了一种新的理财方式&#xff0c;也为金融专业人士提供了一个研究和应用的新领域。本文将带领读者深入了解逆回购的基本概念、操…

人生低谷来撸C#--015 C# 属性(Property)

1、概念 在C#中&#xff0c;属性&#xff08;Property&#xff09;是一种特殊的成员&#xff0c;它提供了一种灵活的机制来访问和修改对象的状态&#xff08;即类的字段&#xff09;。属性结合了字段和方法的特性&#xff0c;使得数据的访问和修改更加安全和便捷。下面我用一个…

Qt源码交叉编译带openssl的Qt版本

一.背景 近期项目由于对接的后台服务是https的&#xff0c;之前交叉编译的Qt是不带openssl的&#xff0c;为了能支持https&#xff0c;必须要重新编译Qt。 二.环境 环境准备&#xff1a; Ubuntu版本 &#xff1a;18.04&#xff1b; openssl 版本&#xff1a;1.1.1.g&#xff1b…

C/C++的堆栈内存分配详解

在C/C编程中&#xff0c;内存管理是至关重要的一个方面。理解内存的分配方式有助于编写高效、可靠的程序&#xff0c;C/C主要使用两种内存分配方式&#xff1a;堆&#xff08;heap&#xff09;和栈&#xff08;stack&#xff09;。这两者在管理方式、性能和使用场景上都有显著区…

python计算PMF、PDF、CDF、PPF、KDE介绍

目录 1. 总括1.1 绘图示例1.2 概念介绍1. PMF (Probability Mass Function)2. PDF (Probability Density Function)3. CDF (Cumulative Distribution Function)4. PPF (Percent Point Function)5. KDE (Kernel Density Estimation)1. 总括 1.1 绘图示例 上图展示了PMF、PDF、C…

物联网精密空调监控指标解读:松越_TCP7022EX_精密空调

监控易是一款专业的IT和物联网设备监控软件&#xff0c;能够实时监控各类IT资源和物联网设备的运行状态&#xff0c;确保系统的稳定运行。在物联网精密空调领域&#xff0c;监控易对松越_TCP7022EX_精密空调进行了全面的监控&#xff0c;以下是对其监控指标的详细解读。 监控指…

天工Godwork AT 5.2.6 GodWork2D 2.1.5 GodWork EOS 2.1实景三维建模软件

天工Godwork AT 5.2.6/GodWork2D 2.1.5/GodWork EOS 2.1实景三维建模软件 获取安装包联系邮箱:2895356150qq.com 本介绍用于学习使用&#xff0c;如有侵权请您联系删除&#xff01; 1.自主研发的平差技术&#xff0c;平差模块不依赖PATB、Bingo等国外技术 2.采用特征匹配&…

华媒舍:6个媒体宣发套餐,快速突破传播界限

在当今信息爆炸的社会中&#xff0c;有效地传播自己的信息变得愈发困难。特别是对于媒体宣发来说&#xff0c;如何在市场竞争激烈的情况下突破传播界限&#xff0c;让自己的消息传达给更多的人&#xff0c;这是每个企业和个人都面临的难题。 为了解决这个问题&#xff0c;我们推…