ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色
目录
配置文件
基本语法规则:
YAML支持的数据结构
playbook核心元素
ansible-playbook用法:
触发器
特点:
角色:
习题:
配置文件
playbook配置文件使用yaml语法,YAML 是一门标记性语言,专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。yaml格式文件用于保存针对特定需求的任务列表。(应为逐条输入命令效率非常的低下,更有效的方案是在playbook配置文件中放置所有的任务代码,可以实现自动化运维)yaml文件的扩展名为.yaml或.yml。
基本语法规则:
yaml语法和其他高级语言类似,其结构缩进来展示,通过 “ - ” 来代表项,通过冒号“ :”来分隔键和值,整个文件以 “---”开始并以“ …”结束(开始结束符号可以不写,只是表明一个文件的开始。可以直接以 - hosts:开头)
列表中的所有成员都开始于相同的缩进级别, 并且使用一个 "- " 作为开头(一个横杠和一个空格):
1.大小写敏感
2.使用缩进表示层级关系(每个任务之间的缩进必须严格要求,务必对齐!语法没有问题,缩进有问题一样不能执行。缩进问题ansible-playbook --syntax-check 命令检测不出来。)
3.不允许使用TAB键来缩进,只允许使用空格键来缩进!!!
4.缩进的空格数量不重要,空格数量要一致,建议使用两个空格
5.使用"#"来表示注释
YAML支持的数据结构
对象(字典):键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组(列表):一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
- hosts: noe-group #对noe-group组的操作remote_user: root #远端执行用户身份为roottasks: #任务列表- name: adduser user #任务名称user: name=user2 state=present #执行user模块,创建用户tags: #创建tag标签- a #tag标签为a
所有的“一”和“:”后面均有空格,而且要注意缩进和对齐
playbook核心元素
hosts: | 任务的目标主机,多个主机用冒号分隔, 一般调用/etc/ansible/hosts 中的分组信息。 |
remote_user: | 远程主机上,运行此任务的身份默认为root。 |
tasks: | 任务,即定义的具体任务,由模块定义的操作列表。 |
handlers: | 触发器,类似tasks, 只是在特定的条件下才会触发的任务。某任务的状态在运行后为 changed 时,可通过"notify" 通知给相应的 handlers 进行触发执行。 |
roles: | 角色,将hosts剥离出去,由 tasks、handlers 等所组成的一种特定的结构集合。 |
ansible-playbook用法:
--syntax-check | 检测 yaml文件的语法。 |
-C(--check) | 预测试,不会改变目标主机的任何设置。 |
--list-hosts | 列出 yaml 文件影响的主机列表。 |
-list-tasks | 列出 yaml 文件的任务列表。 |
--list-tegs | 列出 yaml 文件中的标签。 |
-t TAGS(--tags=TAGS) | 表示只执行指定标签的任务。 |
--skip-tags=SKIP_TAGS | 表示除了指定标签的任务,执行其他任务。 |
--start-at-task=START_AT | 从指定的任务开始往下运行。 |
触发器
需要条件触发才能执行的任务,之前定义在 tasks 中的任务执行成功后,在此基础上触发其他的任务继续执行,就需要定义handlers。
特点:
handlers | 是 Ansible提供的条件机制之一。handlers 和 task 很类似,但是它只在被task 通知的 时候才会触发执行。 |
handlers | 只会在所有任务执行完后执行。而且即使被通知了多次,它也只会执行一次。handlers 按照定义的顺序依次执行。 |
例如:
- hosts:not-group #针对not-group组进行的操作remote_user: root #远程执行身份为roottasks: #任务列表- name: modify port #任务名称shell: sed -i 's/Listen\80/Listen\8080/g' /etc/httpd/conf/httpd.conf#使用shell模块执行操作,修改端口notify: #配置触发条件- restart httpd server #完成该任务后调用名为“restart httpd server”的触发器handlers: #配置触发器- name: restart httpd server #指定触发器名称service:name=httpd state=restarted #触发任务为重启httpd服务
角色:
将多种不同的 tasks 的文件集中存储在某个目录下,则该目录就是角色。角色一般存放在 /etc/ansible/roles/目录,可通过 ansible 的配置文件来调整默认的角色目录,/etc/ansible/roles/目 录下有很多子目录,其中每一个子目录对应一个角色,每个角色也有自己的目录结构。
/etc/ansible/roles/为角色集合,该目录下有自定义的各个子目录:
1、mariadb:mysql 角色。
2、Apache:httpd 角色。
3、nginx:nginx 角色。
每个角色的定义,以特定的层级目录结构进行组织。以Mariadb(mysql角色)为例
- 1、files,存放由 copy 或 script 等模块调用的文件。
- 2、templates:存放 template 模块查找所需要的模板文件的目录,如 mysql 配置文件等模板。
- 3、tasks:任务存放的目录。
- 4、handlers:存放相关触发执行器的目录,
- 5、vars:变量存放的目录。
- 6、meta: 用于存放此角色元数据。
- 7、default:默认变量存放的目录,文件中定义了此角色使用的默认变量。
上述目录中,tasks、handlers、vars、meta、default 至少应该包含一个 main.yml 文件,该目录下也可以有其他.yml 文件,但是需要在main.yml 文件中用 include 指令将其他.yml 文件包含进来。 有了角色之后,可以直接在 yaml文件 (playbook 配置文件)中调用角色。
例如:
- hosts:not-groupremote_user: rootrolse:- mysql: #调用角色名- httpd: #调用角色名
- 可以只调用一个角色.也可以调用多个角色。当定义了角色后,用 ansible-playbook PLAYBBOOK 文件执行即可。此时 ansible会到角色集合的目录(/etc/ansible/roles)去找 mysql 和 httpd 目录,然后 依次运行 mysql 目录和 httpd目录下的所有代码。
- 下面通过一个实例配置数据库角色,要求被管理主机上自动安装 Mariadb,安装完成之后上传提 前准备好的配置文件至远端主机,重启服务,然后新建 testdb 数据库,并允许 test 用户对其拥有所有权限。
习题:
1.Ansible 根据角色划分为( )三个部分。 | |
A. 使用者 BAnsible 脚本 C.Ansible 工具集 D. 作用对象. | |
2. 下面属于Ansible 工具集的有( ). | |
A.Inventory B.Modules C.Plugins D.API | |
3.Ansible 中, Inventory 文件的默认路径是( ). | |
A./etc/ansible/Inventory B./etc/ansible/Inventory.conf C./etc/ansible/hosts D./etc/ansible/hosts.conf | |
4.Ansible 中,角色默认位于( )目录中. | |
A./var/ansible/roles B./etc/ansible/roles C./etc/roles D./opt/ansible/roles | |
5.Ansible 中, command 模块的作用是( ) | |
A. 执行 linux 命令 B. 修改文件权限 C. 安装软件 D. 复制文件 |
相关文章:

ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色
目录 配置文件 基本语法规则: YAML支持的数据结构 playbook核心元素 ansible-playbook用法: 触发器 特点: 角色: 习题: 配置文件 playbook配置文件使用yaml语法,YAML 是一门标记性语言,专门用来写配…...

web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css
MENU 效果图htmlsassscss编译后的css页面css 效果图 注意查看蓝色按钮。 html <div class"box"><button class"btn type_1">按钮</button><button class"btn type_2">按钮</button><button class"btn ty…...

交通地理信息系统实习教程(二)
这篇文章服务于GIS背景用户以及有志于GIS的朋友 操作源数据位置:【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置:【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…...
Shell脚本——批量清理Kubernetes集群中Evicted状态的pod
测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…...

(深度估计学习)Win11复现DepthFM
目录 1. 系统配置2. 拉取代码,配置环境3.开始深度预测4.运行结果 论文链接:https://depthfm.github.io/ 讲解链接:https://www.php.cn/faq/734404.html 1. 系统配置 本人系统:Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…...
cocos creator 帧率60 不生效meta50 能刷新到90
环境: cocos creator 2.4.3 华为meta 50 背景: 小游戏 需要在update 里取帧率 发现跟时间对不上 游戏设置60帧 手机上显示 90帧 cc.game.setFrameRate(30) 显示 30帧 cc.game.setFrameRate(60) 显示 90帧 结论: 对于老版本的cocos creator …...

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction
(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…...

【核弹】我的第一款IDEA插件
SuperHotSwap 插件名称叫做:SuperHotSwap(超级热更新) 开发初心:旨在做出一款最便捷的IDEA热更新插件,减少用户操作步骤,提供零配置的可视化操作更新。 为什么要写这个插件: 每次改一下Mappe…...

【工作篇】软件工程师的知识基础(持续更新)
目录 1. linux 知识篇 1. linux 知识篇 1. Linux API 是什么 Linux API 是指 Linux 操作系统 提供的应用程序接口,用于与操作系统进行交互。它包含了一系列的函数、系统调用、库函数和数据结构,用于实现各种系统级的操作,如文件操作、进程…...
知识付费系统开源方案,教育机构如何利用朋友圈做转介绍?
招生成本高,效果差让许多教育机构头疼不已。对于教育机构来说通过转介绍招生是一个非常有效的途径,那么教育机构如何利用朋友圈做转介绍呢?今天小编就来和大家分享一下。 利用朋友圈做转介绍,主要是通过做活动,来完成增加粉丝、扩…...
c++20 std::reinterpret_cast、std::bit_cast、std::static_cast
std::reinterpret_cast 类型不相关的转换,不安全例如转为&,不支持,要求sizeof相同: uint32_t n32 12345678;//0x00bc614e uint32_t* ptr reinterpret_cast<uint32_t*>(n32);//0x00bc614e uint32_t& ref reinter…...

PHP单独项目启动演示
文章目录 phpstudy得到文件打开phpStudy.exe运行项目 Apache运行后又自动停止 phpstudy 得到文件 一般我们会得到这么一个项目文件,如果外层有“中文路径”,请剪切此内容作为项目根目录即可 打开phpStudy.exe 因为我又正常的编程环境和mysql&#x…...

vscode 通过ssh 远程执行ipynb +可以切换conda env
主要是保证几个点 远程服务器python 环境没问题 conda这些也都有的ssh的账户 是有conda权限的没有免密就输入密码 免密教程就是最基本的那种 公钥copy过去就行了vscode 那几个插件都要装好 开始操作 首先 vscode 点击左侧工具栏中的扩展,搜索“ssh”,…...

ASP.NET银行大厅自助信息系统的开发与实现
摘 要 本毕业设计在基于银行业务大厅现有业务的基础上,针对自助银行的概念和其独有特点,通过.NETSQL技术,开发一个简单的银行大厅自助信息系统,完成一些自助银行的业务需求如帐户信息查询、帐户挂失、自助交费、留言、新闻查询…...
学习Vue3中reactive
学习Vue3中reactive 一、前言1、响应式对象2、对象属性的访问3、嵌套响应式对象4、避免直接修改响应式对象5、ref vs reactive 一、前言 在 Vue 3 中,reactive 是一个用于创建响应式对象的函数。响应式对象是 Vue 3 中数据驱动视图的核心,它们的属性的变…...

【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV
论文信息 论文名:Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation 中文:通过交叉视图变换(crossview transform module)估计单目道路场景布局 数据集:KITT…...

nestJs中跨库查询
app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下...
Java编程思想
面向对象编程(OOP)-CSDN博客 面向对象(OOP)的主要特点-CSDN博客 接口(Interface)和抽象类(Abstract Class)编程思想-CSDN博客 接口(Interface)和抽象类(Abstract Class)区别-CSDN博客 抽象类(Abstract Class)-CSDN博客 普通类和抽象类-CSDN博客 内部类编程思想-CSDN博客 …...

数组(Java)
数组 数组是相同类型元素的集合。 数组的定义和使用 数组的创建 数组名又叫引用变量,简称引用 下面代码段中new表示创建新的对象 T[ ] 数组名 new T[ N ];//数组名又叫引用变量,简称变量 //T:表示数组中存放元素的类型 //T[]…...

接口自动化测试框架搭建
🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、原理及特点 参数放在XML文件中进行管理用httpClien…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...