”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Python与Excel动态风险更新技巧

Python与Excel动态风险更新技巧

发布于2025-04-18
浏览:141

[2 使用Python和Excel的动态风险更新”

Dynamic Risk-Based Updates Using Python and Excel在此博客中,我们将使用一个简单的Ansible Server Update脚本,并将其转变为基于风险的更新系统

。在这里,风险最低的服务器首先要修补,使我们有机会在进行更高优先级系统之前进行彻底测试。

Ansible自动化:

使用Python和Excel的基于动态风险的更新”

主机文件
  • 动态主机列表
    • 为什么不使用hosts文件?
    • 秘密调味料?设置定义明确的组,使该流程无缝。但是真正的问题是:我们可以在上次对我们的Ansible脚本进行重大更改的情况下实现这一目标吗?让我们找出答案!
    • 主机文件
  • 主机文件是此更改的核心。在上一篇文章中,我们使用了由服务器类型分组的静态文件。现在,我们通过风险级别添加了第二层分组 - 这确实为主机文件添加了一些复杂性。
,但这是扭曲:如果我们的主机文件可以从更通用的源动态生成,该怎么办?这将使事情保持灵活性,并使我们免于无尽的文件编辑!

动态主机列表

Ansible可以与动态创建的主机文件一起使用,这为我们提供了一种更灵活的方法来跟踪服务器。在此示例中,我们将使用Excel文件来组织我们的主机。

[2

主机名

服务器环境

ansible用户

服务器类型
dns 笔记薄荷 dev Richard 桌面 desktop.sebostech.local [2 ansible_node dev ansible_admin ansible ansible_node.sebostech.local 开发服务器;仅更新月度 clone_master dev ansible_admin 克隆 clone.dev.sebostech.local 开发服务器;仅更新月度 mele Richard NAS PBS 测试服务器;用于应用程序测试 pve 生产根 hypervisor 测试服务器;用于应用程序测试 Richard 防火墙 ##这将再次运行所有主机 ansible -playbook -i dynamic_inventory.py playbook.yml ##仅生产 server_environment =“生产” ansible -playbook -i dynamic_inventory.py playbook.yml- limit“ high:web” ##只是nas server_type =“ nas” ansible -playbook -i dynamic_inventory.py playbook.yml- limit“ high:web” ##生产NAS server_environment =“生产” server_type =“ nas” ansible -playbook -i dynamic_inventory.py playbook.yml- limit“ high:web” 需要新组?只需更新Excel文件,然后将python脚本相应地调整! 您可以使用传统的主机文件实现这一目标吗?确定但有一些缺点。使用主机文件,您可能最终会获得重复的条目或其他变量,以捕获所需的所有结构。另一方面,Excel文件提供了一个干净,易于维护的结构,可以使事物井井有条。
[2 测试服务器;用于应用程序测试
生产 备份服务器
[2 生产
NAS 批判服务器;需要每日备份 防火墙 生产 Richard
firewall.sebostech.local 批判服务器;需要每日备份 大多数IT部门已经在Excel文件中藏有服务器列表,那么为什么不充分利用它呢?这种方法使我们可以轻松地保持我们的宿主有组织和最新,而无需持续的手动更新。 但是,Ansible如何使用Excel文件?让我们研究如何将这些数据转换为可用的动态库存!
您还可以根据服务器环境,服务器类型,甚至两者的组合使用环境变量选项来定位特定组: 查看python代码,请参阅此处。 为什么不使用主机文件? 刚开始使用Ansible时,主机文件是我的首选。但是,当我添加了更多的服务器,尤其是具有双重角色的服务器时,该文件越来越复杂。
在公司环境中,很有可能至少有一个带有服务器列表的Excel文件,所以为什么不利用它?
如果您希望我深入研究Python代码,请让我知道!

版本声明 本文转载于:https://dev.to/sebos/dynamic-risk-based-updates-using-python-and-excel-dcp?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。本文深入研究了eval()和ast.literal_eval()之间的差异,突出显示其安全性含义...
    编程 发布于2025-05-05
  • Java中假唤醒真的会发生吗?
    Java中假唤醒真的会发生吗?
    在Java中的浪费唤醒:真实性或神话?在Java同步中伪装唤醒的概念已经是讨论的主题。尽管存在这种行为的潜力,但问题仍然存在:它们实际上是在实践中发生的吗? Linux的唤醒机制根据Wikipedia关于伪造唤醒的文章,linux实现了pthread_cond_wait()功能的Linux实现,利用...
    编程 发布于2025-05-05
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-05-05
  • 如何正确使用与PDO参数的查询一样?
    如何正确使用与PDO参数的查询一样?
    在pdo 中使用类似QUERIES在PDO中的Queries时,您可能会遇到类似疑问中描述的问题:此查询也可能不会返回结果,即使$ var1和$ var2包含有效的搜索词。错误在于不正确包含%符号。通过将变量包含在$ params数组中的%符号中,您确保将%字符正确替换到查询中。没有此修改,PDO...
    编程 发布于2025-05-05
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-05-05
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-05-05
  • 为什么我会收到MySQL错误#1089:错误的前缀密钥?
    为什么我会收到MySQL错误#1089:错误的前缀密钥?
    mySQL错误#1089:错误的前缀键错误descript [#1089-不正确的前缀键在尝试在表中创建一个prefix键时会出现。前缀键旨在索引字符串列的特定前缀长度长度,以便更快地搜索这些前缀。理解prefix keys `这将在整个Movie_ID列上创建标准主键。主密钥对于唯一识别...
    编程 发布于2025-05-05
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-05-05
  • MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    在两个条件下插入或更新或更新 solution:的答案在于mysql的插入中...在重复键更新语法上。如果不存在匹配行或更新现有行,则此功能强大的功能可以通过插入新行来进行有效的数据操作。如果违反了唯一的密钥约束。实现所需的行为,该表必须具有唯一的键定义(在这种情况下为'名称'...
    编程 发布于2025-05-05
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-05-05
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-05-05
  • 如何从2D数组中提取元素?使用另一数组的索引
    如何从2D数组中提取元素?使用另一数组的索引
    Using NumPy Array as Indices for the 2nd Dimension of Another ArrayTo extract specific elements from a 2D array based on indices provided by a second ...
    编程 发布于2025-05-05
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-05-05
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-05-05
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-05-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3