DevOps学习笔记-CD篇-ansible自动化运维4
nanshan 2024-10-15 11:29 24 浏览 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.
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 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)