php中文网

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

php中文网

使用 python 和 excel 进行基于风险的动态更新”

在本博客中,我们将采用一个简单的 ansible 服务器更新脚本,并将其转变为基于风险的更新系统。在这里,风险最低的服务器首先得到修补,使我们有机会在转向更高优先级的系统之前进行彻底的测试。

  • ansible 自动化:
    • 使用 python 和 excel 进行基于风险的动态更新”
    • 主机文件
    • 动态主机列表
    • 为什么不使用主机文件?

秘方?设置明确的组以使此过程无缝进行。但真正的问题是:我们能否在不对上次的 ansible 脚本进行重大更改的情况下实现这一目标?让我们来看看吧!

主机文件

主机文件是此更改的核心。在上一篇文章中,我们使用了按服务器类型分组的静态文件。现在,我们添加了按风险级别分组的第二层 - 这确实增加了主机文件的复杂性。

但问题在于:如果我们的主机文件可以从更通用的源动态生成怎么办?这将使事情保持灵活性并使我们免于无休止的文件编辑!

立即学习“Python免费学习笔记(深入)”;

动态主机列表

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

hosts_data.xlsx 结构示例:

host name server environment ansible user server type dns notes
mint dev richard desktop desktop.sebostech.local mint desk top
ansible_node dev ansible_admin ansible ansible_node.sebostech.local development server; only updates monthly
clone_master dev ansible_admin clone clone.dev.sebostech.local development server; only updates monthly
mele staging richard nas nas.stage.sebostech.local testing server; used for application testing
pbs production root backup server pbs.prod.sebostech.local testing server; used for application testing
pve production root hypervisor api.stage.sebostech.local testing server; used for application testing
samba production richard nas nas.prod.sebostech.local critical server; requires daily backup
firewall production richard firewall firewall.sebostech.local critical server; requires daily backup

大多数 it 部门已经将服务器列表存储在 excel 文件中,那么为什么不充分利用它呢?这种方法可以轻松地使我们的 ansible 主机保持井井有条并保持最新状态,而无需不断进行手动更新。

但是 ansible 是如何使用 excel 文件的呢?让我们深入研究如何将这些数据转换为可用的动态库存!

## this will run agains all host
ansible-playbook -i dynamic_inventory.py playbook.yml

您还可以根据服务器环境、服务器类型甚至两者的组合,使用环境变量选项来定位特定组:

## Just production
SERVER_ENVIRONMENT="production" 
ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"

## Just nas
SERVER_TYPE="nas" 
ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"

## production nas
SERVER_ENVIRONMENT="production" 
SERVER_TYPE="nas" 
ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"

需要新群组吗?只需更新 excel 文件并相应调整 python 脚本 - 就这么简单!

要查看 python 代码,请参阅此处。

为什么不使用主机文件?

当我第一次开始使用 ansible 时,hosts 文件是我的首选。但随着我添加更多服务器,尤其是具有双重角色的服务器,该文件变得越来越复杂。

您可以使用传统的主机文件来实现此目的吗?当然可以,但是有一些缺点。

使用主机文件,您可能最终会得到重复的条目或附加变量来捕获您需要的所有结构。另一方面,excel 文件提供了干净、易于维护的结构,使内容保持井井有条。

在企业环境中,很可能已经至少有一个包含服务器列表的 excel 文件,那么为什么不利用它呢?

如果您希望我更深入地研究 python 代码,请告诉我!

以上就是使用 Python 和 Excel 进行基于风险的动态更新的详细内容,更多请关注php中文网其它相关文章!