自动化运维-ansible中对于大项目的管理

自动化运维-ansible中对于大项目的管理

一、引用主机清单

在Playbook中引用主机时,hosts 字段指定的目标必须与Ansible主机清单中定义的标识符完全匹配。如果清单中配置的是主机名,则在Playbook中使用IP地址或其他别名将无法匹配,导致任务被跳过

错误示例

inventory 中配置

在这里插入图片描述

playbook 中配置

在这里插入图片描述

发现报错,直接跳过该任务

在这里插入图片描述

主机清单引用方式大全

方式示例说明
单台主机hosts: node1指定清单中的具体主机名
hosts: node1.example.com使用FQDN(前提是清单里如此定义)
hosts: 172.16.30.10使用IP地址(前提是清单里如此定义)
所有主机hosts: all定位到清单中的所有主机
hosts: '*'通配符,同样代表所有主机
主机组hosts: net定位到net组中的所有主机
模式匹配hosts: '*.example.com'匹配所有以.example.com结尾的主机
hosts: '172.16.30.*'匹配172.16.30.0/24网段的所有主机
hosts: 'web*'匹配所有名称以web开头的主机
hosts: node[ 1-5 ]匹配node1, node2, …, node5
hosts: node[ a-d ]匹配nodea, nodeb, nodec, noded
集合操作hosts: net:webserver并集:属于netwebserver组的主机
hosts: net:&webserver交集:同时属于netwebserver组的主机
hosts: net:!node1差集:属于net组但排除node1主机

二、配置并行执行

1. 使用 forks 控制并发连接数

Ansible默认同时只能处理5台主机(由ansible.cfg中的forks参数控制)

流程如下

  • 一个Play中如果有10台主机,forks=5
  • Ansible会先在前5台主机上执行完所有任务
  • 然后再在剩下的5台主机上执行所有任务

对不同的受控主机

  • Linux受控主机:任务主要在受控端运行,控制节点负载较轻,可适当增加forks值以加速执行
  • 网络设备:模块多在控制节点运行,负载较高,不宜设置过高的forks
2. 使用 serial 进行并行执行

默认情况下,一个Play中所有主机必须全部完成一个任务,才会进入下一个任务。如果中间某台主机任务失败,整个Play会中止,导致已成功主机的Handlers也无法触发

执行流程:

  1. 在最先的2台主机(设定 serial=2)上执行Play,安装httpd,成功后触发handler重启服务
  2. 这2台处理完毕后,再在接下来的2台主机上执行相同的Play
  3. 依此类推,直到所有批次完成
  4. 即使某一批次失败,也只影响该批次,已成功的批次已正常执行了Handler

serial 也可以指定百分比(如 serial: "20%") 或列表(如 serial: [1, 5, 10],表示第一批1台,第二批5台,剩余全部10台一批)

示例

[student@master ansible] vim b.yml
# playbook内容如下
---
- name: test2hosts: node1,node2,node3,node4serial: 2tasks:- name: test21debug:msg: wil

在这里插入图片描述

三、包含与导入

为了提升Playbook的模块化和可重用性,可以将任务或整个Playbook分解到不同文件中

1. 导入(import_*) - 静态预处理

解析Playbook时,Ansible会将导入的文件内容直接复制到当前位置。适用于逻辑简单、结构固定的场景

  • import_playbook: 导入另一个Playbook文件
  • import_tasks: 导入任务文件

示例

配置 playbook , repo.yml

[student@master ansible] vim repo.yml
# playbook内容如下
---
- name: repohosts: alltasks:- name: baseosyum_repository:name: baseosdescription: rhel9-baseosbaseurl: http://ansible.example.com/rhel9/BaseOSenabled: yesgpgcheck: no- name: appstreamyum_repository:name: appstreamdescription: rhel9-appstreambaseurl: http://ansible.example.com/rhel9/AppStreamenabled: yesgpgcheck: no

配置 taskshttp.yml

[student@master ansible] vim http.yml
# tasks内容如下
---- name: install httpyum: name: httpdstate: installed

配置 playbook , install1.yml

[student@master ansible] vim install1.yml
# playbook内容如下
---
- name: import-repoimport_playbook: repo.yml
- name: install hhosts: node1tasks:- import_tasks: http.yml- name: start httpdservice:name: httpdstate: startedenabled: yes

在这里插入图片描述

2. 包含(include_*) - 动态执行

Play运行期间遇到include_*语句时,才会处理导入的文件内容。更灵活,支持与循环结合使用

  • include_tasks: 动态包含任务文件

示例

配置 tasks , vsftp.yml

[student@master ansible] vim vsftp.yml
# tasks内容如下
---- name: install vsftpdyum: name: vsftpdstate: installed

配置 playbook , install2.yml

[student@master ansible] vim install2.yml
# playbook内容如下
---
- name: install ftphosts: node1tasks:- include_tasks: vsftp.yml- name: start vsftpdservice:name: vsftpdstate: startedenabled: yes

在这里插入图片描述

导入 vs. 包含 关键区别
特性导入 (import_*)包含 (include_*)
处理时机解析时(静态)运行时(动态)
循环不支持支持与loop一起使用
条件触发对所有导入任务应用单个when条件可为包含的每个任务应用不同条件
变量导入时变量必须已定义运行时变量可用,更灵活

最佳实践: 优先使用导入,除非你需要循环包含依赖于运行时变量的动态功能。

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

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

相关文章

59_基于深度学习的麦穗计数统计系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

目录 项目介绍🎯 功能展示🌟 一、环境安装🎆 环境配置说明📘 安装指南说明🎥 环境安装教学视频 🌟 二、数据集介绍🌟 三、系统环境(框架/依赖库)说明🧱 系统环…

面试问题详解十六:Qt 内存管理机制

在 Qt 开发过程中,很多初学者(包括不少有经验的 C 程序员)经常会产生这样的疑问:“我在 Qt 中 new 出来的控件好像都没有 delete,那内存不会泄漏吗?”比如下面这段代码: void Widget::createLef…

Pycharm 试用

Ubuntu 重置Pycharm试用期限(30 天) 先关闭Pycharm删除系统缓存 rm -rf ~/.config/JetBrains/ && rm -rf ~/.local/share/JetBrains/ && rm -rf ~/.cache/JetBrains/删除已经安装的 Pycharm 软件运行目录去官网下载新的 就行了

C++ Qt 开发核心知识

Qt 框架概述Qt 是一个跨平台的 C 应用程序开发框架,广泛用于开发图形用户界面程序。其核心特性包括跨平台能力、丰富的功能模块和强大的工具集。核心概念与机制元对象系统Qt 扩展了标准 C,通过元对象系统提供信号与槽机制、运行时类型信息和动态属性系统…

net9 aspose.cell 自定义公式AbstractCalculationEngine,带超链接excel转html后背景色丢失

AbstractCalculationEngine 是 Aspose.Cells 中一个强大的抽象类,允许您自定义公式计算逻辑。当您需要覆盖默认计算行为或实现自定义函数时非常有用。直接上代码1. 创建自定义计算引擎using Aspose.Cells; using System;// 创建自定义计算引擎 public class CustomC…

如何监控员工的电脑?7款实用的员工电脑管理软件,探索高效管理捷径!

当销售团队在淘宝刷单、设计师用公司电脑挖矿、程序员频繁访问代码托管网站时,企业损失的不仅是带宽——低效、泄密、合规风险正成为隐形利润杀手。 传统管理依赖“人盯人”或抽查日志,但面对分布式办公与远程协作趋势,这些方法早已力不从心…

机器视觉软件--VisionPro、Visual Master,Halcon 和 OpenCV 的学习路线

Halcon 和 OpenCV区别 Halcon 和 OpenCV 都是计算机视觉领域的重要工具,但它们的设计理念、功能侧重和适用场景有显著不同。下面这个表格汇总了它们的核心区别,方便你快速了解: 开发模式与体验​​:Halcon 配备了强大的​​图形化…

算法-根据前序+中序遍历打印树的右视图

题目请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图数据范围: 0≤n≤100000≤n≤10000 要求: 空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)如输入[1,2,4,5,3],[4,2,5,1,3]时,通过前序遍历…

Kafka面试精讲 Day 7:消息序列化与压缩策略

【Kafka面试精讲 Day 7】消息序列化与压缩策略 在Kafka的高性能消息系统中,消息序列化与压缩是影响吞吐量、延迟和网络开销的核心环节。作为“Kafka面试精讲”系列的第7天,本文聚焦于这一关键主题,深入剖析其原理、实现方式、配置策略及常见…

Xterminal软件下载_Xterminal ssh远程链接工具下载__Xterminal安装包 网盘下载_Xterminal ssh远程链接工具安装包

Xterminal 作为一款国产 SSH 工具,专为开发人员量身打造。它支持 SSH 和 Telnet 协议连接远程服务器与虚拟机,无论是进行代码部署,还是服务器运维,都能轻松胜任。软件界面采用极简设计,黑色背景搭配白色文字&#xff0…

Lua > 洛谷

Lua > 洛谷P1000 超级玛丽游戏P1001 AB ProblemP1008 [NOIP 1998 普及组] 三连击P1035 [NOIP 2002 普及组] 级数求和P1046 [NOIP 2005 普及组] 陶陶摘苹果P1047 [NOIP 2005 普及组] 校门外的树P1085 [NOIP 2004 普及组] 不高兴的津津P1089 [NOIP 2004 提高组] 津津的储蓄计划…

小企业环境-火山方舟和扣子

背景说明 并不是说应该怎么办,而是基本配置有这些可以进行使用,具体不同企业使用的时候肯定要个性化配置。 使用了火山方舟和扣子 火山方舟 应用实验室列表 简单使用了提示词的功能,后端服务ARK_API_KEY 应用ID 来对应请求发送http请求…

QT-事件

Qt事件 除了信号和槽通信机制外,Qt中还提供了事件处理机制实现与用户的交互和对象间的通信。Qt捕获底层操作系统消息,进行封装之后转换为Qt事件,事件处理后才发出信号。 一、事件概述Qt中事件是程序内部或外部发生的动作。比如程序外部&#…

HI3519DRFCV500/HI3519DV500海思核心板IPC算力2.5T图像ISP超高清智能视觉应用提供SDK软件开发包

Hi3519DV500是一颗面向视觉行业推出的超高清智能 SoC。最高支持四路sensor输入,支持最高4K30fps的ISP图像处理能力,支持 2F WDR、多级降噪、六轴防抖、全景拼接、多光 谱融合等多种传统图像增强和处理算法,支持通过AI算法对输入图像进行实时降…

go 初始化组件最佳实践

Go 语言初始化最佳实践 在 Go 语言中, 有一个 init() 函数可以对程序进行包级别的初始化, 但 init() 函数有诸多不便, 例如: 无法返回错误, 进行耗时初始化时, 会增加程序启动时间。因此 init() 函数并不适用于所有初始化。 1.初始化方式 在程序进行初始化时,我们应…

域名暂停解析是怎么回事

域名注册和使用是需要付费的,如果没有及时续费,域名注册商就会暂停该域名的解析服务。相关数据显示,大约有 30% 的域名暂停解析情况是由于欠费引起的。比如,有个小公司的网站域名到期了,负责续费的员工忘记操作&#x…

前端开发的“三剑客”—— ​​HTML、CSS、JavaScript​​

前端开发的“三剑客”—— ​​HTML、CSS、JavaScript​​,是构建所有网页和Web应用的基石。它们分工明确又紧密协作,共同实现了网页的“内容结构”“视觉表现”和“交互行为”。以下是三者的详细解析及协作逻辑:​​1. HTML:网页…

TDengine TIMEDIFF() 函数用户使用手册

TDengine TIMEDIFF() 函数详细使用手册 目录 功能概述函数语法参数说明返回值说明版本变更说明技术特性使用场景及示例时间单位处理数据类型兼容性注意事项常见问题最佳实践 功能概述 TIMEDIFF() 函数用于计算两个时间戳的差值,返回 expr1 - expr2 的结果。结果…

数据结构:栈和队列(上)

汇总代码见:登录 - Gitee.com 上一篇文章:数据结构:双向链表-CSDN博客 与本文相关的结构体传参:自定义类型:结构体-CSDN博客 1.栈 1.1概念和结构 栈:一种特殊的线性表,其只允许在固定的一端…

文档抽取技术:提取非结构化文档中的关键信息,提升档案管理、金融保险和法律合规领域的效率与准确性

在信息爆炸的时代,各种机构、企业等都面临着海量非结构化文档数据的挑战。报告、合同、票据、档案记录、法律文书等文档中蕴藏着巨大的数据,但传统依靠人工阅读、理解和录入的方式效率低下、成本高昂且容易出错。文档抽取技术作为人工智能和自然语言处理…