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…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
