DevOps学习笔记-CD篇-ansible自动化运维4
nanshan 2024-10-15 11:29 9 浏览 0 评论
目录
一、文档概述
发现前面的文章推荐和阅读量都不高,看来枯燥知识总是不容易引起共鸣。果然尝不到果实的甜美是不知道种树的意义的。不过不要紧,后面介绍到真实案例的时候,回来翻翻也是够用的。为了提高大家学习的信心,我会降低每篇文章的内容含量,省的看到一半就看不下去了..
本文档主要介绍playbook编写与使用的预备知识。
二、PLAYBOOK相关名词
playbook是个啥,上篇文章已经讲到了,现在我们看看它都包含啥
- Tasks:任务,由模板定义的操作列表
- Variables:变量
- Templates:模板,即使用模板语法的文件
- Handlers:处理器,当某条件满足时,触发执行的操作
- Roles:角色
1. Tasks
一个合格的task通常包含hosts(用来指定任务要执行的主机或者主机群),一堆task排在一起就叫做Tasks,Play的主体部分是task列表,Tasks中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务。
- task包含hosts,name,module: options等参数
- hosts指定当前任务要操作的主机对象,一般在hosts同时指定了对端服务器IP、执行用户等关键信息。多个task合并成一组Tasks时,hosts可以共用一份.
- name,是指task的名称,每个最小粒度的task必须有一个name,由开发者自由定义
- module:options.一般成对出现,用来声明当前任务要执行的动作.一般推荐采用ansible自带的模块加模块执行参数.
如果你觉得上面一堆东西晕头转向,那么上代码!!我们的原则是,能用代码说清楚的事情就绝对不哔哔....
--- - hosts: 192.168.11.101 //指定主机 remote_user: root //指定在被管理的主机上执行任务的用户 tasks: //任务列表↓ - name: disable selinux //任务名关闭selinux command: '/sbin/setenforce 0' //调用command模块 执行关闭命令 - name: start httpd //任务名 开启httpd service: name=httpd state=started //调用service模块 开启httpd 服务
上面这个脚本干了两个活,一是禁用selinux,二是启动apache.至于ansible模块不熟悉没关系,后面我们会逐一讲到.上述文件格式为啥这么写,请参照第三节.
2. Variables
vars是为了增加脚本普适性而存在的概念,可以大大增加ansible文件的可复用性.例如上小节提到的这个脚本只能启用httpd服务,如果要换成其他服务看起来很麻烦.我们可以小手一动,变成这样:
--- - hosts: 192.168.11.101 //指定主机 remote_user: root //指定在被管理的主机上执行任务的用户 vars: - service: tomcat tasks: //任务列表↓ - name: disable selinux //任务名关闭selinux command: '/sbin/setenforce 0' //调用command模块 执行关闭命令 - name: start {{service}} //任务名 开启变量定义的服务 service: name={{service}} state=started //调用service模块 开启 服务
也没什么嘛,不就是把要修改的地方放到前面去了么,嘿嘿,小同志,你这么想也没啥不对,但是如果变量能从数据库或者其他API动态获取的话,是不是这么干瞬间就有意义啦.具体案例我们下回分解.
3. Handlers
handlers也是一些task的列表,和一般的task并没有什么区别。只是有个类似AOP的机制,到声明的地方,可以跳转到一段指定逻辑执行,执行完毕后再返回原任务列表位置继续向下执行.且一个个handler只能被执行一次.
这个东西,在这里不做赘述,后面文章里我们用实战案例来进一步了解.
4. template
签于本文写着写着又超长了,template模块介绍的时候再详细介绍这部分
5. Roles
敲黑板、划重点。其实有了上面的元素,足够应对我们的业务逻辑了。那么为啥又引入了一个角色的概念呢。其实也是为了复用性考虑。你可以简单的认为,一个角色就是把一堆使用频度相对较高,有共性的任务列表组合而成,简化真正逻辑的编写。试想一下下面的场景。
张三,早上,上了个厕所,然后赶地铁上班
李四,早上,上了个厕所,然后出门买早餐
王五,早上,上了个厕所,打卡下班
嗯。。。。,你看上厕所也不是个简单是吧,得打开门、进去蹲下、脱(和谐)。。。等等一大堆步骤,如果上述张三李四王五每个都要写一遍简直不可理喻,干脆打包个角色 上厕所,然后再编写各自场景的个性化部分就好了。
我这么说,你是不是考虑去上个厕所?
三、PLAYBOOK编写语法
PlayBook全面采用了YAML语法, 它被用来描述一个 playbooks(我们的配置管理语言).,YAML有基本的分支写法,但是它不是一种脚本代码,可以理解为是一种和json一样的易读性强的数据格式.
1. 基本的 YAML
对于 Ansible, 每一个 YAML 文件都是从一个列表开始. 列表中的每一项都是一个键值对, 通常它们被称为一个 “哈希” 或 “字典”. 所以, 我们需要知道如何在 YAML 中编写列表和字典.
YAML基本编写方式,相比搜索一下,你就知道.本文就说点干货和要点 .先让大家知其然,如果大家有钻研精神,想知其所以然,可以留言或者自行百度..
- 每个YAML文件(也就是ansible每个配置文件)都必须以"---"开头(三个中划线).
- 列表成员缩进必须相同,必须以:"- "(一中划线一空格)开头
- 键值对的键和值用": "(冒号,空格)分割
- 值如果包含冒号,那么整个值串必须用双引号包裹
- {{var}} 双大括号是标记变量的方式
2. YAML样例
让我们把目前所学到的 YAML 例子组合在一起. 这些在 Ansible 中什么也干不了, 但这些格式将会给你感觉:
--- # 一位职工记录 name: Example Developer job: Developer skill: Elite employed: True foods: - Apple - Orange - Strawberry - Mango languages: ruby: Elite python: Elite dotnet: Lame
四、小结
今天的知识有个大体概念后,我们就可以着手开始编写真的业务逻辑了.下篇文章,我们将直接展示几个案例的playbook编制.欢迎MARK.
相关推荐
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
-
Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
-
服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
-
服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
-
服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
-
服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
-
服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
-
服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
-
服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
-
服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
-
RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...
- 「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例
-
服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...
- 服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?
-
服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...
- 服务器数据恢复—Linux+raid5服务器数据恢复案例
-
服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...
- 服务器数据恢复—Sql Server数据库数据恢复案例
-
服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...
- 服务器数据恢复—阿里云ECS网站服务器数据恢复案例
-
云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)